CentOS系统yum安装MySQL 5.5/5.6/5.7/8.0

作为一个Web开发者,工作时间越长,越觉得数据库相关知识的重要,听说从MySQL5.7开始,已经原生对JSON提供了支持,正好想系统学习一下MySQL的相关知识,于是狠下心买了本MySQL教程学习一下,书中使用的是MySQL5.7,但是最新版的CentOS7自带的是MariaDB 5.5,还不是纯正的MySQL,也不知道是不是对应的MySQL5.5,所以花了一点时间学习了一下MySQL 5.7的安装,这里记录一下。

对于我这种不想折腾源码编译的人来说,要安装什么软件肯定是第一时间想到通过源安装了,Google了一波,发现还真能从repo安装MySQL5.7,还是MySQL官方的,不仅5.7,还能安装5.5/5.6/8.0,这简直良心啊,Oracle难得这么良心一次。
和别的添加第三方源安装软件包差不多,都是添加源,启用源,安装软件包,使用MySQL官方源安装MySQL也一样,首先是添加MySQL官方yum源,我用的最多的是CentOS7,为了测试两者的区别,我还去Digitalocean开了个Droplet测试了下,发现添加源之后,两者都能安装MySQL 5.5/5.6/5.7/8.0,不容易啊。

CentOS7添加MySQL官方yum源

其实也就两行命令:

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum localinstall mysql57-community-release-el7-11.noarch.rpm

CentOS6添加MySQL官方yum源

也是两行,就是rpm文件不一样而已:

wget https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm
yum localinstall mysql57-community-release-el6-11.noarch.rpm

以上两个下载地址如果有变,到这里查看最新的就行:https://dev.mysql.com/downloads/repo/yum/
接下来的操作两个系统一样,首先是查看当前启用的是那个MySQL版本源:

yum repolist enabled | grep "mysql.*-community.*"

如果没有修改的话,默认是MySQL5.7,输出如下:

[root@elsenow-do-ams3 ~]# yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community           MySQL Connectors Community               45
mysql-tools-community                MySQL Tools Community                    57
mysql57-community                    MySQL 5.7 Community Server              237

查看所有MySQL相关源

[root@elsenow-do-ams3 ~]# yum repolist all | grep mysql
mysql-cluster-7.5-community        MySQL Cluster 7.5 Community       禁用
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - Sou 禁用
mysql-cluster-7.6-community        MySQL Cluster 7.6 Community       禁用
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - Sou 禁用
mysql-connectors-community         MySQL Connectors Community        启用:    45
mysql-connectors-community-source  MySQL Connectors Community - Sour 禁用
mysql-tools-community              MySQL Tools Community             启用:    57
mysql-tools-community-source       MySQL Tools Community - Source    禁用
mysql-tools-preview                MySQL Tools Preview               禁用
mysql-tools-preview-source         MySQL Tools Preview - Source      禁用
mysql55-community                  MySQL 5.5 Community Server        禁用
mysql55-community-source           MySQL 5.5 Community Server - Sour 禁用
mysql56-community                  MySQL 5.6 Community Server        禁用
mysql56-community-source           MySQL 5.6 Community Server - Sour 禁用
mysql57-community                  MySQL 5.7 Community Server        启用:   237
mysql57-community-source           MySQL 5.7 Community Server - Sour 禁用
mysql80-community                  MySQL 8.0 Community Server        禁用
mysql80-community-source           MySQL 8.0 Community Server - Sour 禁用

可以看出,从5.5到8.0都可以,只是默认启用的是5.7,如果想安装别的版本的MySQL,用yum-config-manager启用或禁用相关的源即可,比如说禁用MySQL5.7启用MySQL5.6:

yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql56-community

或者也可以直接编辑/etc/yum.repos.d/mysql-community.repo文件。
更改之后,通过下列命令查看当前启用的是那个源:

yum repolist enabled | grep mysql

确定之后,可以安装MySQL Server了:

yum install mysql-community-server

安装过程很快,安装完之后,通过下列命令启动:

service mysqld start
或者
systemctl start mysqld

这里有一点和之前各发行版不一样的是,根据MySQL官方文档,MySQL安装完成之后,MySQL会使用一个随机密码,而且validate_password会默认启用,所以,我们不需要再手动设置初始密码,也不能用空密码登录MySQL了。
MySQL初始化密码被记录在/var/log/mysqld.log,我们可以通过如下命令找到:

grep 'temporary password' /var/log/mysqld.log

然后登录MySQL:

mysql -uroot -p

回车后输入上面查找到的那个随机密码,就能登录MySQL了。
但是登录之后还不能立即进行增删改查操作,无论输入什么,都是提示你先更改密码:

[root@elsenow-do-ams3 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.21
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> select mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>

还能说什么,直接改呗,更改MySQL密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'ElseNow123!';

这里有一点需要注意的是,由于validate_password的存在,所更改的密码不能太简单,必须符合validate_password要求才能更改成功,根据官方文档,MySQL密码要求是:

至少包含一个大写字母,一个小写字母,一个数字,一个特殊符号,且不能少于8位

看这要求,貌似比之前的版本密码要求是要高一点了,但是这也无可厚非,MySQL官方是出于MySQL服务器的安全考虑,我们要么按照它的要求来,要么把validate_password关闭,我还是建议按照官方的要求来,毕竟服务器安全要紧。
更改完密码,剩下的操作我目前所知的是和之前版本一样了,就没什么说的了。
参考资料:
https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
https://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html