在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。
先使用 wget 去下载 Yum Repository。如下:
[root@S5 ~]# wget -i https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
或者自己下载 rpm 文件后,通过FTP上传到Linux服务器,下载的rpm文件大概在25KB的样子。下载后的文件如下:
[root@S5 ~]# ll 总用量 32 -rw-------. 1 root root 1421 12月 12 2017 anaconda-ks.cfg -rw-r--r--. 1 root root 25820 11月 24 14:08 mysql80-community-release-el7-1.noarch.rpm [root@S5 ~]#
现在我们就可以直接使用 yum 命令安装了。如下:
[root@S5 ~]# yum -y install mysql80-community-release-el7-1.noarch.rpm 已加载插件:fastestmirror 正在检查 mysql80-community-release-el7-1.noarch.rpm: mysql80-community-release-el7-1.noarch mysql80-community-release-el7-1.noarch.rpm 将被安装 正在解决依赖关系 --> 正在检查事务 ---> 软件包 mysql80-community-release.noarch.0.el7-1 将被 安装 --> 解决依赖关系完成 依赖关系解决 =================================================================================================================================== Package 架构 版本 源 大小 =================================================================================================================================== 正在安装: mysql80-community-release noarch el7-1 /mysql80-community-release-el7-1.noarch 31 k 事务概要 =================================================================================================================================== 安装 1 软件包 总计:31 k 安装大小:31 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : mysql80-community-release-el7-1.noarch 1/1 验证中 : mysql80-community-release-el7-1.noarch 1/1 已安装: mysql80-community-release.noarch 0:el7-1 完毕! [root@S5 ~]#
自此,就可以使用“yum -y install”开始安装MySQL服务器。如下:
[root@S5 ~]# yum -y install mysql-community-server 已加载插件:fastestmirror Determining fastest mirrors * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com base | 3.6 kB 00:00:00 docker-ce-stable | 3.5 kB 00:00:00 extras | 2.9 kB 00:00:00 jenkins | 2.9 kB 00:00:00 ... 依赖关系解决 =================================================================================================================================== Package 架构 版本 源 大小 =================================================================================================================================== 正在安装: ... 事务概要 =================================================================================================================================== 安装 3 软件包 (+2 依赖软件包) 总下载量:473 M Downloading packages: 警告:/var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-common-8.0.18-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY mysql-community-common-8.0.18-1.el7.x86_64.rpm 的公钥尚未安装 (1/5): mysql-community-common-8.0.18-1.el7.x86_64.rpm | 597 kB 00:00:02 (2/5): mysql-community-libs-8.0.18-1.el7.x86_64.rpm | 3.7 MB 00:00:01 (3/5): mysql-community-libs-compat-8.0.18-1.el7.x86_64.rpm | 1.3 MB 00:00:00 (4/5): mysql-community-client-8.0.18-1.el7.x86_64.rpm | 38 MB 00:00:16 (5/5): mysql-community-server-8.0.18-1.el7.x86_64.rpm | 429 MB 00:19:15 ----------------------------------------------------------------------------------------------------------------------------------- ... 已安装: mysql-community-libs.x86_64 0:8.0.18-1.el7 mysql-community-libs-compat.x86_64 0:8.0.18-1.el7 mysql-community-server.x86_64 0:8.0.18-1.el7 作为依赖被安装: mysql-community-client.x86_64 0:8.0.18-1.el7 mysql-community-common.x86_64 0:8.0.18-1.el7 替代: mariadb-libs.x86_64 1:5.5.60-1.el7_5 完毕! [root@S5 ~]#
这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb。至此MySQL就安装完成了,然后是对MySQL的一些设置。
首先启动MySQL,如下:
[root@S5 ~]# systemctl start mysqld.service
查看MySQL运行状态,运行状态如图:
[root@S5 ~]# systemctl status mysqld.service ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since 日 2019-11-24 16:52:20 CST; 27s ago Docs: man:mysqld(8) https://dev.mysql.com/doc/refman/en/using-systemd.html Process: 10867 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 10947 (mysqld) Status: "Server is operational" Tasks: 39 Memory: 383.5M CGroup: /system.slice/mysqld.service └─10947 /usr/sbin/mysqld 11月 24 16:52:06 S5 systemd[1]: Starting MySQL Server... 11月 24 16:52:20 S5 systemd[1]: Started MySQL Server. [root@S5 ~]#
此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
[root@S5 ~]# grep "password" /var/log/mysqld.log 2019-11-24T08:52:14.462166Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: LPzNyx3vI2,! [root@S5 ~]#
如下命令进入数据库:
[root@S5 ~]# mysql -u root -p
输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
[root@S5 ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.18 Copyright (c) 2000, 2019, 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> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
上面设置 mysql 的密码为 123456,但是出错了。这是因为新密码设置的过于简单。错误信息如下:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
抛出错误的原因是因为 MySQL 有密码设置的规范,具体是与 validate_password_policy 的值有关:
我们把密码设置更复杂,如下:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'qazPL<123'; Query OK, 0 rows affected (0.03 sec)
将数据库密码设置为:qazPL<123
MySQL完整的初始密码规则可以通过如下命令查看:
mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 1 | +--------------------------------------+--------+ 7 rows in set (0.03 sec)
密码的长度是由 validate_password.length 决定的,而 validate_password.length 的计算公式是:
validate_password.length = validate_password.number_count + validate_password.special_char_count + (2 * validate_password.mixed_case_count)
我的是已经修改过的,初始情况下第一个的值是ON,validate_password.length 是 8。可以通过如下命令修改:
mysql> set global validate_password.policy=0; Query OK, 0 rows affected (0.00 sec) mysql> set global validate_password.length=1; Query OK, 0 rows affected (0.00 sec)
设置之后就是我上面查出来的那几个值了,此时密码就可以设置的很简单,例如aaaaaa之类的。到此数据库的密码设置就完成了。实例如下:
mysql> alter user 'root'@'localhost' identified by 'aaaaaa'; Query OK, 0 rows affected (0.01 sec)
但此时还有一个问题,就是因为安装了 Yum Repository,以后每次 yum 操作都会自动更新,需要把这个卸载掉:
[root@S5 ~]# yum -y remove mysql57-community-release-el7-10.noarch
此时才算真的完成了。
参考资料: