初探MySQL-小白的Linux安装笔记

这篇文章是咱们组内一位小伙伴(lc_mail@163.com)垒的文字,亲测每一个步骤,真实、可靠、接地气,照着作就能入门Linux下的MySQL安装,欢迎更多的小伙伴能将平常工做中的经验记录下来,分享给其余人,正所谓“独乐乐不如众乐乐”。
css


最近接到一个任务,因为开发环境变化,须要将旧机器上的mysql迁移到新机器上去,其中涉及到在新服务器安装mysql。其实以前已经在Linux环境安装过一次,可是更多忙于慌乱的解决问题并达到最终目标,对细节的关注度不够,并且虽然整个过程借鉴了不少前辈的经验,但每一个人的思惟方式和关注点不同,因此此次详细的记录了安装全过程。因为是第二次尝试安装,不少问题和细节都未触及,但仍是但愿能给初次安装mysql的萌新提供一些参考。python


1. 安装文件准备

可从mysql官方网站下载。本次安装使用的是mysql-5.7.27-linux-glibc2.12-x86_64.tar。mysql


2. 解压缩文件

解压缩该文件,指令为,linux

tar xvf mysql-5.7.27-linux-glibc2.12-x86_64.tar

指令执行及解压以后的目录以下图所示,sql

继续解压文件mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz,指令为,shell

tar -xzvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz

解压以后该目录以下图所示,红色框中即mysql文件,
数据库


3. 软链接

(1) 将第2步截图红框中的目录(mysql-5.7.27-linux-glibc2.12-x86_64)软链接到/usr/local/mysql(如没有该目录则需自行建立)。指令为,
json

ln -s mysql-5.7.27-linux-glibc2.12-x86_64 /usr/local/mysql

(2) 执行(1)以后,查看/usr/local/mysql目录,效果以下图所示。安全

可是发现红框选中的目的链接持续闪烁,ruby

(3) 可经过修改(1)中的指令的方式解决(2)所描述的链接闪烁问题,即在(1)指令中写明原文件的全路径。

先删除原链接,

rm -rf /usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64

新的指令以下,

ln -s /opt/app/software/mysql/mysql-5.7.27-linux-glibc2.12-x86_64 /usr/local/mysql/

执行以后查看/usr/local/mysql目录以下截图所示,


4. 建立用户

使用root权限,建立用户。指令以下所示,

groupadd mysqluseradd -g mysql -s /sbin/nologin -d /usr/local/mysql/ -M mysql


5. 设置环境变量

设置mysql相关的环境变量,指令以下,

echo PATH=$PATH:/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/bin >>/etc/profilesource /etc/profile


6. 建立必须的目录

直接执行如下指令(会将该目录建立在当前服务器的根目录),

mkdir -p /mysql/3306/{data,tmp,log}

建立目录以后更换属主,

chown -R mysql:mysql 3306


7. 编辑配置文件配置文件my.cnf

关于该配置文件,目前还有如下几点问题不清晰。

(1) 首先提供本次安装my.cnf文件的内容,

(2) 其余安装经验有提到该文件不是必须的,没有该文件mysql也能正常运行。关于此点的理解是mysql有不少默认设置,这些默认设置就能知足通常使用需求。可是因为本次安装basedir和datadir的路径都“不通常”,因此必须特别指定,则经过my.cnf来指定。还有经验指出,能够经过修改mysql.server来指定当前机器的basedir和datadir,可是因为第一次安装就是经过my.cnf来指定的,因此本次仍是沿用了第一次的思路,下次再有安装mysql的需求会尝试经过修改mysql.server的basedir和datadir来实现(修改方式详见本文第8步的描述,如省略my.cnf的配置则直接到第8步)。

(3) 网上有较多该文件的模板,通常都有多段内容:[client]、[mysqld]、[mysqldump]、[mysqld_safe]等,可是本文配置了上图所示的两段内容也可正常运行。因此归根结底还应是mysql默认配置的做用,本次安装只涉及了basedir和datadir的修改,因此配置文件的内容已知足需求。另外了解到涉及mysql调优的时候,该文件会有更大的用处,因此后续涉及数据量很大或者数据库性能问题的时候可深究此文件。


8. 配置mysql.server

cd /usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/support-filescp mysql.server /etc/init.d/mysqld

实现7(2)中的描述,需在此修改该文件的basedir和datadir为当前机器的路径)。此处存留一个问题,也可在后续的安装中尝试解决。看了不少经验都有从support-files将mysql.server复制到/etc/init.d并修改了文件名的操做,难道直接在support-files中修改并使用该文件不能够?为何必定要有copy到另外一个路径的操做?


9. 初始化数据库

初始化数据库,执行指令及返回结果以下所示,

/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/ --datadir=/mysql/3306/data/mysqld: [Warning] World-writable config file '/etc/my.cnf' is ignored.2020-02-29T11:36:35.006277Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).2020-02-29T11:36:35.417910Z 0 [Warning] InnoDB: New log files created, LSN=457902020-02-29T11:36:35.499207Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.2020-02-29T11:36:35.570611Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: bdc0f4c7-5ae7-11ea-95b4-fa163e6e78e4.2020-02-29T11:36:35.574241Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.2020-02-29T11:36:35.574667Z 1 [Note] A temporary password is generated for root@localhost: B-m%;xgH_54d


10. 获取密码

初始化数据库会提供初始密码,需注意保存改密码,后续会用,即上述打印内容的最后一行,

2020-02-29T11:36:35.574667Z 1 [Note] A temporary password is generated for root@localhost: B-m%;xgH_54d


11. 启动数据库

成功启动数据库效果以下图所示,

[root@localhost]# etc/init.d/mysqld startStarting MySQL. SUCCESS!

可是启动数据库期间遇到一个问题,问题以下图所示,

[root@localhost]# /etc/init.d/mysqld startmy_print_defaults: [Warning] World-writable config file '/etc/my.cnf' is ignored.Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)

起初排查问题直接忽略掉了Warning提示信息,只关注ERROR报错,反复确认本身的确在配置文件中正确配置了当前机器的mysql的目录。后来又看到Warning信息,当前机器的配置都是经过/etc/my.conf实现的,可是因为本身贪图方便,将该文件的权限是设置成777,因此致使mysql启动时认为该文件不安全,而将其ignored,随即将该文件的权限改成644,问题解决。


12. 修改root密码

修改密码出现报错:

[root@localhost]# cd /usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/support-file[root@localhost]# mysqladmin -uroot -p password 'my25sql2020'bash: mysqladmin: command not found

该问题的缘由是因为系统默认会查找/usr/bin下的命令,若是命令不在这个目录下,则会报错找不到命令,须要作的就是映射一个连接到/usr/bin目录下,即创建软链接。首先需知道mysql命令或mysqladmin命令的完整路径,好比mysqladmin的路径是:

/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/bin/mysqladmin

则能够这样执行命令:

ln -s /usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/bin/mysqladmin /usr/bin

可是本次暂且经过使用mysqladmin绝对路径的方式也执行成功(后续以为这样很麻烦而且不利于其它人使用,因此最终仍是建立了软链接):


13. 解决第12步的报错

第12步的描述中,截图的最后有一个报错:

'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'Check that mysqld is running and that the socket:'/tmp/mysql.sock' exists!

检查了my.cnf中配置的socket路径,socket=/var/lib/mysql/mysql.sock,而且该路径也已经存在mysql.sock文件。可是mysql仍去找/tmp/mysql.sock,没找到致使了上述报错信息。因此建立一个软链接来解决该问题,指令及结果以下图所示:

以后继续修改密码,修改为功:


14. 登陆数据库

成功登陆数据库


15. Navicat登陆

尝试用Navicat经过root帐号登陆,出现以下图所示的报错,

经排查为是mysql未开启mysql远程访问权限致使, 执行如下语句,修改root用户的权限,一样的报错依然存在。

可是第16步建立的新用户,能够成功经过Navicat访问数据库,又从安全角度考虑root帐号权限过大,因此便未再深究此问题,还将root的权限收回了:update user set host='localhost' where user='root'。


16. 建立新用户


17. 建立数据库并给用户受权

最后的受权也很关键,

至此,即可经过Navicat等第三方软件访问数据库执行增删改查等操做。


其实不少问题都是只知其然,不知因此然。会担忧安装过程当中改错了某个配置而致使最后安装失败或者消耗太多时间成本,可是对于技术的学习的确是须要时间和精力的付出才能更有收获。若是再有这方面的需求,应该能更大胆的研究这些配置文件,或者在之后的使用过程当中尝试修改某项配置看其产生的影响。


MySQL相关历史文章

MySQL时间函数的选择

学习的好地方 - 阿里数据库内核组月报站点

MySQL表名大小写问题

Lost connection to MySQL server错误

Windows环境安装MySQL ZIP Archive

MySQL远程访问权限的设置

MySQL系统运行状态实时监控(python版本)

MySQL系统运行状态实时监控(shell版本)

MySQL 5.6搭建主从复制

MySQL 5.6 rpm安装方法和遇见的问题

MySQL的rpm和源码两种安装操做


近期热文:

公众号600篇文章分类和索引

Oracle ACE,一段难以想象的旅程

Oracle 19c之RPM安装

应用执行慢的问题排查路径

ACOUG年会感想

千万级表数据更新的需求

探寻大表删除字段慢的缘由

一次Oracle bug的故障排查过程思考

新增字段的一点一滴技巧

对recursive calls的深入理解

《Oracle Concept》第三章 - 12

幂等性

一次惊心动魄的问题排查

Java日期中“y”和“Y”的区别

英超梦幻之行

藤子不二雄博物馆之行

传控Tiki-Taka战术解惑

本文分享自微信公众号 - bisal的我的杂货铺(gh_e8769c7350b1)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索