1. 下载相应版本的mysql包
下载mysql-5.7.20-1.el6.x86_64.rpm-bundle.tar
2. 解压tar包
[root@VM_18_112_centos ~]# tar -xvf mysql-8.0.12-1.el7.x86_64.rpm-bundle.tar
mysql-community-common-8.0.12-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.12-1.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.12-1.el7.x86_64.rpm
mysql-community-server-8.0.12-1.el7.x86_64.rpm
mysql-community-server-minimal-8.0.12-1.el7.x86_64.rpm
mysql-community-libs-8.0.12-1.el7.x86_64.rpm
mysql-community-client-8.0.12-1.el7.x86_64.rpm
mysql-community-devel-8.0.12-1.el7.x86_64.rpm
mysql-community-test-8.0.12-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-8.0.12-1.el7.x86_64.rpm
3. 添加msql用户组和用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
注:groupadd和useradd的语法或名称在不同版本的Unix系统上可能略有不同,但在CentOS6.5中应进行如上操作。上述操作只是为了获得系统的所有权,而不是以登录为目的;使用useradd命令和-r和-s /bin/false选项来创建一个没有登录权限的用户。
4. 卸载旧版本的MySql(没有的话,则跳过此步骤)(未实践)
(1) 查看旧版本MySql
rpm -qa | grep mysql
将会列出旧版本MySql的组件列表,如:
我的电脑这里只显示一个,有可能会有多个。
(2) 逐个删除掉旧的组件
使用命令rpm -e --nodeps {-file-name}
进行移除操作,移除的时候可能会有依赖,要注意一定的顺序。
第一次没有删除成功是因为最后多了一个空格。
5. 使用rpm命令安装MySql组件
注:ivh中, i-install
安装;v-verbose
进度条;h-hash
哈希校验
依赖顺序主要按照如下顺序:
rpm -ivh mysql-community-common-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.12-1.el7.x86_64.rpm
在新系统安装时,可能因为缺少依赖而显示如下错误
(1)
[root@VM_18_112_centos ~]# rpm -ivh mysql-community-libs-8.0.12-1.el7.x86_64.rpm
warning: mysql-community-libs-8.0.12-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
mariadb-libs is obsoleted by mysql-community-libs-8.0.12-1.el7.x86_64
如上的报错,由于centos 7默认是mariadb数据库,再去安装mysql之前要先卸载mariadb
[root@VM_18_112_centos ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_064
[root@VM_18_112_centos ~]# rpm -e mariadb-libs-5.5.56-2.el7.x86_064
error: Failed dependencies:
libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
以上报错是由于存在依赖关系,因此强制卸载
[root@VM_18_112_centos ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_064
(2)
[root@VM_18_112_centos ~]# rpm -ivh mysql-community-server-8.0.12-1.el7.x86_64.rpm
warning: mysql-community-server-8.0.12-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
libnuma.so.1()(64bit) is needed by mysql-community-server-8.0.12-1.el7.x86_64
libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-8.0.12-1.el7.x86_64
libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-8.0.12-1.el7.x86_64
如上报错是缺少一个依赖
下载地址:
http://mirror.centos.org/centos/6/os/x86_64/Packages/numactl-2.0.9-2.el6.x86_64.rpm
[root@VM_18_112_centos~]#wget http://mirror.centos.org/centos/6/os/x86_64/Packages/numactl-2.0.9-2.el6.x86_64.rpm
[root@VM_18_112_centos ~]# rpm -ivh numactl-2.0.9-2.el6.x86_64.rpm
6. 查看mysql服务的状态
[root@VM_18_112_centos ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
7. 启动mysql服务
[root@VM_18_112_centos ~]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
[root@VM_18_112_centos ~]# ps -ef | grep mysql
mysql 20657 1 6 09:05 ? 00:00:00 /usr/sbin/mysqld
root 20724 19330 0 09:06 pts/0 00:00:00 grep --color=auto mysql
或(未实践)
[root@seiang software]# systemctl start mysqld.service
[root@seiang software]#
[root@seiang software]# systemctl status mysqld.service
8. 第一次使用临时密码登录
[root@VM_18_112_centos ~]# grep 'temporary password' /var/log/mysqld.log
2018-08-16T01:05:51.150034Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: pvk/%J%p2eOs
[root@VM_18_112_centos ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
如果是mysql6.5 则
[root@VM_18_112_centos mysqlFile]# cat /root/.mysql_secret
9. 更改root密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Metar506si';
更改密码时可能会报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 是密码强度不够,默认要求长度限制,还必须有大小写字母数字以及特殊字符
修改密码验证规则:
(1) mysql> set global validate_password_policy=0;
(2) mysql> set global validate_password_length=1;
有可能会报错ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'原因是mysql7和mysql8的属性名改了
通过查看 MySQL5.7 和 MySQL8.0 密码验证插件对比,可知两个版本中,变量名不一样。(*_password_policy 和 *_password.policy ) --- 问题原因所在。
问题解决如下
1、分析: 可以看到,修改 policy 和 length 的值,在MySQL5.7中好使,在MySQL8.0中无效。'validate_password_policy' 变量不存在。
2、解决: 先修改一个满足的密码 (如:Root_12root)。
补充: validate_password_policy 有以下取值:
Policy |
Tests Performed |
0 or LOW |
Length |
1 or MEDIUM |
Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG |
Length; numeric, lowercase/uppercase, and special characters; dictionary file |
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
3、密码修改后,可用命令查看 validate_password 密码验证插件是否安装。
mysql> SHOW VARIABLES LIKE 'validate_password%';
4、MySQL 5.7 查看密码验证插件:
5、 MySQL 8.0 查看密码验证插件: