今天闲着没事,玩玩CentOS7.7,结果在安装MySQL-5.7.21时,各种坑,费劲巴拉的终于安装上了。然后我又下载了MySQL-5.7.28,安装试试,嗯,坑少了一点点,捂脸笑ing....................下面我整理一下,供大家参考,少采坑。CentOS7.7安装Mysql5.7.28.在下一篇中。
--1. CentOS7.7 也就是这个映像文件:CentOS-7-x86_64-Minimal-1908.iso
--2. MySQL-5.7.21 也就是这个tar包:mysql-5.7.21-1.el6.x86_64.rpm-bundle.tar
上传mysql到linux上:
[root@m00 ~]# cd /opt/software
[root@m00 software]# ls
mysql-5.7.21-1.el6.x86_64.rpm-bundle.tar
[root@m00 software]# tar -xvf mysql-5.7.21-1.el6.x86_64.rpm-bundle.tar
mysql-community-libs-5.7.21-1.el6.x86_64.rpm
mysql-community-devel-5.7.21-1.el6.x86_64.rpm
mysql-community-server-5.7.21-1.el6.x86_64.rpm
mysql-community-test-5.7.21-1.el6.x86_64.rpm
mysql-community-embedded-5.7.21-1.el6.x86_64.rpm
mysql-community-client-5.7.21-1.el6.x86_64.rpm
mysql-community-libs-compat-5.7.21-1.el6.x86_64.rpm
mysql-community-common-5.7.21-1.el6.x86_64.rpm
mysql-community-embedded-devel-5.7.21-1.el6.x86_64.rpm
[root@m00 software]#
这些rpm包,我们只需要其中四个:
mysql-community-libs-5.7.21-1.el6.x86_64.rpm
mysql-community-server-5.7.21-1.el6.x86_64.rpm
mysql-community-client-5.7.21-1.el6.x86_64.rpm
mysql-community-common-5.7.21-1.el6.x86_64.rpm
--1. 查询一下mariadb的相关包
[root@m00 software]# rpm -qa | grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
--2. 卸载查询到的mariadb 加--nodeps 强制卸载哦
[root@m00 software]# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
CentOS7.7最小版默认安装了mariadb-lib库,而mysql-5.7不兼容这个库,所以我们要卸载
玩Linux的你应该知道,安装包都存在着一定的依赖关系,这里我就直接说了,我们最终是想安装mysql-server包,但是mysql-server依赖mysql-client包,而mysql-client依赖mysql-libs包,而mysql-libs依赖于mysql-common包。因此我们的安装顺序如下:
--1. 先安装mysql-common
[root@m00 software]# rpm -ivh mysql-community-common-5.7.21-1.el6.x86_64.rpm
--2. 再安装mysql-libs
[root@m00 software]# rpm -ivh mysql-community-libs-5.7.21-1.el6.x86_64.rpm
--3. 然后安装mysql-client
[root@m00 software]# rpm -ivh mysql-community-client-5.7.21-1.el6.x86_64.rpm
--4. 最后安装mysql-server
[root@m00 software]# rpm -ivh mysql-community-server-5.7.21-1.el6.x86_64.rpm
error: Failed dependencies:
/usr/bin/perl is needed by mysql-community-server-5.7.21-1.el6.x86_64
libsasl2.so.2()(64bit) is needed by mysql-community-server-5.7.21-1.el6.x86_64
net-tools is needed by mysql-community-server-5.7.21-1.el6.x86_64
perl(File::Path) is needed by mysql-community-server-5.7.21-1.el6.x86_64
perl(Getopt::Long) is needed by mysql-community-server-5.7.21-1.el6.x86_64
perl(POSIX) is needed by mysql-community-server-5.7.21-1.el6.x86_64
perl(strict) is needed by mysql-community-server-5.7.21-1.el6.x86_64
在我安装mysql-server的rpm包时,提示安装失败,原因是server依赖软件perl、net-tools 和库文件libsasl2.so.2。这些地方就是要说的坑。
我们可以先使用yum 安装perl 和 net-tools的相关软件
[root@m00 software]# yum -y install perl net-tools
而mysql-server所依赖的libsasl2.so.2,CentOS7.7最小版是没有的,我各种百度,有人说从别的Linux的/usr/lib64/目录下找到,然后放到CentOS7.7的相同路径下,也有人说修改yum源的mysql-community库什么的,乱七八糟的。后来,我在这个网站上下载的libsasl2.so.2的rpm包,网址:http://www.rpmfind.net/linux/rpm2html/search.php?query=libsasl2.so.2()(64bit) 。上传到linux上,安装即可
[root@m00 software]# ls
lib64sasl2-2.1.25-12.1.mga3.x86_64.rpm
--4. 安装libsasl2.so.2的rpm包
[root@m00 software]# rpm -ivh lib64sasl2-2.1.25-12.1.mga3.x86_64.rpm
安装完perl,net-tools和libsasl2.so.2后,我们再安装mysql-server包,就成功了。
--再次安装mysql-server
[root@m00 software]# rpm -ivh mysql-community-server-5.7.21-1.el6.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-server-5.7.21-1.e^C################################# [100%]
费劲巴拉的成功安装完mysql-5.7.21的四个rpm包后,我们就要按照以下步骤,启动服务,找到默认密码,进入MySQL,然后修改成你想要的密码就行了。
--1. 可以使用CentOS7.7的systemctl命令来启动服务
[root@m00 ~]# systemctl start mysqld
-----------如果上述命令,报服务not found,就用以下命令启动服务-----
[root@m00 ~]# service mysqld start
这里要说一下,如果服务还是起不来,就查看/var/log/mysqld.log日志文件,看报什么错,如果报以下红字错误:
7:01.499040Z 0 [ERROR] /usr/sbin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2 - No such file or directory)
2020-01-01T13:27:01.499057Z 0 [ERROR] Can't start server: can't create PID file: No such file or directory。
说明/var/run/目录下是没有mysqld目录的,我们可以手动创建出来,但是需要修改权限,而且reboot后,这个目录又不存在了,很恶心。这个时候我们可以采取一种一劳永逸的方式,修改/etc/my.cnf 和/etc/init.d/mysqld这两个文件里的/var/run/mysqld/...这个路径。
1. 修改/etc/my.cnf
[root@m00 ~]# vi /etc/my.cnf
.......省略.........
log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid <==注释掉或者修改这一行,重新指定路径为/tmp,参考下面
pid-file=/tmp/mysqld.pid
2. 修改/etc/init.d/mysqld
[root@m00 ~]# vi /etc/init.d/mysqld
......省略........
#get_mysql_option pid-file "/var/run/mysqld/mysqld.pid" mysqld mysqld_safe
#将上面的内容注释掉或者修改,参考下面的内容
get_mysql_option pid-file "/tmp/mysqld.pid" mysqld mysqld_safe
mypidfile="$result"
.............省略..........
3. 这样再启动服务,就应该没有问题了
启动服务后,mysql会生成一个默认的初始密码,比较复杂。我们找到,并进入mysql。
1. 去mysqld.log日志文件里查看初始密码,下面root@localhost:后的内容就是你的密码。别复制我的密码...呵呵
[root@m00 ~]# cat /var/log/mysqld.log | grep password
2020-01-01T13:02:09.836826Z 1 [Note] A temporary password is generated for root@localhost: UhctshQYt7%.
2. 登陆,输入密码(可以采用复制的方式,如果你愿意手抄,当我没说)
[root@m00 ~]# mysql -u root -p
Enter password: <==复制那个初始密码,粘贴
这一步比较恶心,在CentOS7.7里安装的mysql-5.7版本,密码策略默认设置的比较高,即要求密码中要有大小写字母,要有数字,还要有特殊字符。否则提示你: Your password does not satisfy the current policy requirements
1. 我们先修改密码策略为low
mysql> set global validate_password_policy=low;
2. 在查看密码策略
mysql> show variables like '%validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
可以看到密码的长度是8,如果你愿意,你可以将密码长度改为6.
3. 将密码长度改为6
mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)
4. 修改你想要的密码吧
mysql> alter user root@localhost identified by '单引号里写密码'
到此为止,mysql-5.7.21 就可以在CentOS7.7里正常使用了。
--------------------------------------------如有疑问,敬请留言--------------------------------------------------------------