与 5.7.x 的安装类似,这里记录一些安装和配置过程中遇到的坑。

后记

  • 更新日期:2019-07-09

在 CentOS-7-x86_64-Minimal-1810 上安装 8.0.16 的正确顺序

以 root 身份操作。

1
2
3
4
5
6
yum install -y openssl-devel net-tools perl net-tools libaio
rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm

遇到的依赖问题

1
2
3
4
pkgconfig(openssl) is needed by mysql-community-devel-8.0.16-2.el7.x86_64
# 安装相关依赖:yum install -y openssl-devel
net-tools is needed by mysql-community-server-8.0.16-2.el7.x86_64
# 安装相关依赖:yum install -y net-tools

安装前,先卸载 mariadb

1
2
3
4
5
6
7
8
[root@localhost ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.41-2.el7_0.x86_64
[root@localhost ~]# rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64
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@localhost ~]# rpm -e postfix-2:2.10.1-6.el7.x86_64 postfix-2:2.10.1-6.el7.x86_64
[root@localhost ~]# rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64

安装最新版 MySQL-8.0.11

环境

CentOS 1804 版本最小安装,下载的 CentOS 安装文件:CentOS-7-x86_64-Minimal-1804.iso

安装

下载:wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar

截至 2019-03-30 最新版为 8.0.15
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@localhost mysql]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@localhost mysql]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64
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@localhost mysql]# rpm -e postfix-2:2.10.1-6.el7.x86_64 postfix-2:2.10.1-6.el7.x86_64
[root@localhost mysql]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64

[root@localhost mysql]# rpm -ivh mysql-community-devel-8.0.11-1.el7.x86_64.rpm
warning: mysql-community-devel-8.0.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
pkgconfig(openssl) is needed by mysql-community-devel-8.0.11-1.el7.x86_64

# yum install -y openssl-devel

[root@localhost mysql]# rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm
warning: mysql-community-server-8.0.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
/usr/bin/perl is needed by mysql-community-server-8.0.11-1.el7.x86_64
libaio.so.1()(64bit) is needed by mysql-community-server-8.0.11-1.el7.x86_64
libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-8.0.11-1.el7.x86_64
libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-8.0.11-1.el7.x86_64
net-tools is needed by mysql-community-server-8.0.11-1.el7.x86_64
perl(Getopt::Long) is needed by mysql-community-server-8.0.11-1.el7.x86_64
perl(strict) is needed by mysql-community-server-8.0.11-1.el7.x86_64

# yum install -y perl net-tools libaio

启动

1
2
3
[root@centOS7BasicForTest mysql]# systemctl start mysqld
[root@centOS7BasicForTest mysql]# grep 'temporary password' /var/log/mysqld.log
2018-05-23T10:36:55.296728Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Bjs_PbXc)9R6

用临时密码登录

1
mysql -uroot -p'Bjs_PbXc)9R6'

然后修改初始密码

1
2
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Akd*89@!3a2Kkd2#@';
Query OK, 0 rows affected (0.20 sec)

总结

在安装 MySQL 之前需要安装以下依赖

1
yum install -y openssl-devel perl net-tools libaio

授权问题

之前下面的语句不会报错,但是授权没有生效,一直提示不允许连接。

1
2
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'aAdDmMiInN1!1!0)3#' WITH GRANT OPTION;

重启一次之后,授权开始报错了:

1
2
3
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'aAdDmMiInN1!1!0)3#' WITH GRANT OPTION;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'aAdDmMiInN1!1!0)3#' WITH GRANT OPTION' at line 1
mysql>

换成:

1
2
3
4
mysql> CREATE USER 'admin'@'%' IDENTIFIED BY 'aAdDmMiInN1!1!0)3#';
Query OK, 0 rows affected (0.11 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
Query OK, 0 rows affected (0.04 sec)

客户端连接问题

用 MySQL Workbench 连接,提示如下:

1
2
3
4
5
6
7
8
9
10
11
[Window Title]
MySQL Workbench

[Main Instruction]
Failed to Connect to MySQL at 192.168.1.91:3306 with user admin

[Content]
Authentication plugin 'caching_sha2_password' cannot be loaded: The specified module could not be found.


[OK]

查询加密方式

1
2
3
4
5
6
7
8
9
10
11
mysql> select user, host, plugin, authentication_string from user;
+------------------+-----------+-----------------------+------------------------------------------------------------------------+
| user | host | plugin | authentication_string |
+------------------+-----------+-----------------------+------------------------------------------------------------------------+
| admin | % | caching_sha2_password | $A$005$el:pBr6Zm]lPq+eznuC21bJF/13HhJpj3ZpNQksjeGjWllXMs/nve4gYeW4 |
| mysql.infoschema | localhost | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.session | localhost | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| root | localhost | caching_sha2_password | $A$005$&7BX~rD1]HMMtFb_}r-3eq0bH7XqiKfYs3dOS4VM53ET2pMYc4QElxU5ddkSR7 |
+------------------+-----------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.01 sec)

在创建用户的时候,用的是:CREATE USER ‘admin‘@’%’ IDENTIFIED BY ‘aAdDmMiInN1!1!0)3#’;
修改成如下的加密方式授权:

1
2
mysql> ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'aAdDmMiInN1!1!0)3#';
Query OK, 0 rows affected (0.05 sec)

再次连接,可以了!

由 MySQL 8.0.11 降级到 5.7.22

由于有软件还不支持最新版 8.0.11,不得已,还得降级至 5.7 版本。

仅执行 rpm -e mysql 删除 5 个组件,然后重新安装,启动失败

  • 查看已安装的版本

    1
    2
    3
    4
    5
    6
    [root@AndyCentOS7Basic ~]# rpm -qa | grep mysql
    mysql-community-client-8.0.11-1.el7.x86_64
    mysql-community-libs-8.0.11-1.el7.x86_64
    mysql-community-devel-8.0.11-1.el7.x86_64
    mysql-community-server-8.0.11-1.el7.x86_64
    mysql-community-common-8.0.11-1.el7.x86_64
  • 然后依次执行删除

    1
    2
    3
    4
    5
    rpm -e mysql-community-server-8.0.11-1.el7.x86_64
    rpm -e mysql-community-client-8.0.11-1.el7.x86_64
    rpm -e mysql-community-devel-8.0.11-1.el7.x86_64
    rpm -e mysql-community-libs-8.0.11-1.el7.x86_64
    rpm -e mysql-community-common-8.0.11-1.el7.x86_64

重新操作,彻底删除

除了删除刚安装好的 5 个组件之外,还将 mysql 的其它文件及目录一并删除

1
2
3
4
5
6
7
8
9
10
11
[root@centOS7BasicForTest log]# cd /var/lib/ 
[root@centOS7BasicForTest lib]# rm -rf mysql/
[root@centOS7BasicForTest lib]# whereis mysql
mysql: /usr/share/mysql
[root@centOS7BasicForTest log]# cd /usr/share/
[root@centOS7BasicForTest share]# rm -rf myslq/ mysql-8.0/
[root@centOS7BasicForTest bin]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/etc/selinux/targeted/tmp/modules/100/mysql
/usr/share/mysql
[root@centOS7BasicForTest share]# rm -rf /usr/share/mysql /etc/selinux/targeted/active/modules/100/mysql /etc/selinux/targeted/tmp/modules/100/mysql

再次安装之后,启动成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@centOS7BasicForTest mysql]# rpm -ivh mysql-community-common-5.7.22-1.el7.x86_64.rpm 
warning: mysql-community-common-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-common-5.7.22-1.e################################# [100%]
[root@centOS7BasicForTest mysql]# rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm
warning: mysql-community-libs-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-libs-5.7.22-1.el7################################# [100%]
[root@centOS7BasicForTest mysql]# rpm -ivh mysql-community-devel-5.7.22-1.el7.x86_64.rpm
warning: mysql-community-devel-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-devel-5.7.22-1.el################################# [100%]
[root@centOS7BasicForTest mysql]# rpm -ivh mysql-community-client-5.7.22-1.el7.x86_64.rpm
warning: mysql-community-client-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-client-5.7.22-1.e################################# [100%]
[root@centOS7BasicForTest mysql]# rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm
warning: mysql-community-server-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-server-5.7.22-1.e################################# [100%]

[root@centOS7BasicForTest ~]# systemctl start mysqld
[root@centOS7BasicForTest ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2018-05-24 18:38:36 HKT; 11s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 2589 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 2506 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 2591 (mysqld)
CGroup: /system.slice/mysqld.service
└─2591 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

May 24 18:38:31 centOS7BasicForTest systemd[1]: Starting MySQL Server...
May 24 18:38:36 centOS7BasicForTest systemd[1]: Started MySQL Server.

后记

2019-04-03 安装最新版 8.0.15 报错

1
2
3
4
5
6
rpm -ivh mysql-community-server-8.0.15-1.el7.x86_64.rpm 
warning: mysql-community-server-8.0.15-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.15-1.el7.x86_64
libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-8.0.15-1.el7.x86_64
libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-8.0.15-1.el7.x86_64

解决:
安装依赖 numactl

1
yum install numactl -y

2019-12-26 安装 8.0.18 报错

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost mysql]# rpm -ivh mysql-community-libs-8.0.18-1.el8.x86_64.rpm 
warning: mysql-community-libs-8.0.18-1.el8.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
libc.so.6(GLIBC_2.28)(64bit) is needed by mysql-community-libs-8.0.18-1.el8.x86_64
libcrypto.so.1.1()(64bit) is needed by mysql-community-libs-8.0.18-1.el8.x86_64
libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) is needed by mysql-community-libs-8.0.18-1.el8.x86_64
libssl.so.1.1()(64bit) is needed by mysql-community-libs-8.0.18-1.el8.x86_64
libssl.so.1.1(OPENSSL_1_1_0)(64bit) is needed by mysql-community-libs-8.0.18-1.el8.x86_64
libssl.so.1.1(OPENSSL_1_1_1)(64bit) is needed by mysql-community-libs-8.0.18-1.el8.x86_64
libstdc++.so.6(CXXABI_1.3.9)(64bit) is needed by mysql-community-libs-8.0.18-1.el8.x86_64
libstdc++.so.6(GLIBCXX_3.4.20)(64bit) is needed by mysql-community-libs-8.0.18-1.el8.x86_64
libstdc++.so.6(GLIBCXX_3.4.21)(64bit) is needed by mysql-community-libs-8.0.18-1.el8.x86_64

我在 CentOS7 上安装,下载的是 mysql-8.0.18-1.el8.x86_64.rpm-bundle.tar,这是针对 CentOS8 的版本。
版本不对,注定是会失败的,下载时注意要下载对应 OS 的版本。

换成 mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar,再按照上面的步骤安装就非常顺利。