mysql5.7升级到8.0的过程记录

准备工作:清理旧版本mysql,准备rpm安装包

1. 获取到mysql最新安装包如下,将其放在虚拟机路径/usr/mysql

  • mysql-community-client-8.0.26-1.el7.x86_64.rpm
  • mysql-community-common-8.0.26-1.el7.x86_64.rpm
  • mysql-community-libs-8.0.26-1.el7.x86_64.rpm
  • mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm
  • mysql-community-server-8.0.26-1.el7.x86_64.rpm

2. 使用rpm -qa|grep mysql命令查看是否安装了mysql,如果显示有,转到3

3. 已经安装了mysql需要先将安装的mysql卸载,直接进行rpm -Uvh [包名] --force --nodeps的方式进行升级将会导致mysql无法启动

  • 执行rpm -ev [包名] --force --nodeps命令将2中显示出来的已安装的和mysql有关的包全部卸载,需要注意的是,如果后缀不加--nodeps可能不能进行删除,因为这些包存在依赖关系,需要强制删除
rpm -ev mysql-community-server-5.7.22-1.el7.x86_64 --nodeps
rpm -ev mysql-community-libs-compat-5.7.22-1.el7.x86_64 --nodeps
rpm -ev mysql-community-libs-5.7.22-1.el7.x86_64 --nodeps
rpm -ev mysql-community-common-5.7.22-1.el7.x86_64 --nodeps
rpm -ev mysql-community-client-5.7.22-1.el7.x86_64 --nodeps
  • 执行以下命令删除其他目录中的配置和数据文件
rm -f /etc/my.cnf
rm -rf /var/lib/mysql
rm -rf /usr/lib64/mysql

开始安装8.0版本的mysql

1. 转到/usr/mysql目录,执行以下命令

rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm --force --nodeps

2. 执行以下命令,启动mysql

service mysqld start
  • 可以通过以下命令查看mysql的运行状态:
service mysqld status
  • 执行以下命令,配置开机自启动:
#启用开机自启动
chkconfig mysqld on
#关闭开机自启动
chkconfig mysqld off

3.进行mysql的配置

修改/etc/my.cnf文件,在节点 [mysqld]节点下增加 default-time-zone = '+08:00'

  • 执行以下命令查看初始的随机密码:
cat /var/log/mysqld.log | more

其中的[Note] A temporary password is generated for root@localhost:d-s)sqqcv5(Z表示随机密码是d-s)sqqcv5(Z,执行命令:

mysql -uroot -p

输入上述随机密码进行登录

  • 在这里我遇到了问题,使用mysqld.log中的初始随机密码进行登录时显示ERROR,应该是密码不正确,不知道是什么原因,如果有同样遇到问题的伙计,可以参考下面我的解决方法:
    执行命令如下
#修改my.cnf文件,以便先跳过密码验证登入mysql
vim /etc/my.cnf

在其中的节点 [mysqld]节点下增加skip-grant-tables,按下Esc,:,输入wq保存退出,重启mysql:

service mysqld restart

重新执行命令:

mysql -uroot -p

这次可以直接回车而无需输入密码,可以登陆进入mysql,然后进行密码设置,执行sql命令如下:

flush privileges;
update user set password=PASSWORD('123456') where user='root';

注意其中的第一句命令,如果不执行就设置密码会报错,提示当前处于无密码登录,无法执行命令;其中的123456就是用于登录mysql要设置的密码
如此可以解决使用初始随机密码无法登录的问题。

  • 执行命令set global validate_password_mixed_case_count=0;报错:ERROR 1193 (HY000): Unknown system variable 'validate_password_mixed_case_count'
    • 原因:mysql8.0已经将这些字段名全部更改,validate_password之后应该跟一个.,其他保持不变
    • 解决:将错误的字段名改正,如validate_password_mixed_case_count更改为validate_password.mixed_case_count
    • 执行以下命令:
	set global validate_password.mixed_case_count=0;
	set global validate_password.number_count=3;
	set global validate_password.special_char_count=0;
	set global validate_password.length=3;
	set global validate_password.policy=0;
  • 接下来按照搭建文档(搭建文档为公司内部文档,不便透露)安装mysql的下一步,执行命令grant all on *.* to 'root'@'%' identified by '123456';报错,说是有语法错误,mysql8.0不再这么写了,而是要换用下面的写法:
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SHOW VARIABLES LIKE 'validate_password%';
  • 最后执行service mysqld restart重启mysql,然后使用Navicate进行远程连接数据库,成功。
  • 配置/etc/my.cnf文件,将外部已有的文件内容直接拷贝到其中,重启mysql,遇到问题:mysql重启失败,查看日志报错信息如下:
Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CR...

4.配置文件my.cnf注意事项

  • 在8.0中以下参数已被过期:

    • log日志保存的天数:expire_logs_days
  • 在8.0中以下参数已被删除:

    • NO_AUTO_CREATE_USER
  • [ERROR] [MY-000067] [Server] unknown variable ‘query_cache_size=16M’.

    • 注解掉该参数
  • mysqld: Table ‘mysql.plugin’ doesn’t exist
    2021-09-15T03:11:30.325042Z 0 [ERROR] [MY-010735] [Server] Could not open the mysql.plugin table. Please perform the MySQL upgrade procedure.

    • 此错误是由于mysql初始化失败导致的,执行mysqld --initialize --console可以进行初始化,
  • mysqld: File ‘./binlog.index’ not found (OS errno 13 - Permission denied)

    • 没有赋予权限,执行命令chown mysql.mysql -R /var/lib/mysql,重启mysql

查看密码复杂度表

show variables like 'validate_password%';

版权声明:本文为weixin_41915353原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。