近期几个项目的MySQL由5.7升级到8.0,升级过程中遇到四个问题,记录下来分享一下:
第一个问题详见之前的文章:
MySQL 5.7升级8.0报异常:处理新增关键字
第二个问题详见之前的文章:
MySQL 5.7升级8.0报异常:ONLY_FULL_GROUP_BY
三、默认密码策略变更
1、遇到的异常
MySQL版本由5.7升级到8.0之后,数据库连接不上,项目服务启动不了
2、原因
默认密码策略变更了,MySQL 5.7默认密码认证插件是mysql_native_password,MySQL8.0默认的密码认证插件是caching_sha2_password,新的密码认证插件引入了更严格的密码策略,包括密码过期、密码重用限制和密码复杂度要求。
3、解决
升级后密码认证插件需要改回mysql_native_password,否则之前的账号密码无法登陆。
查看密码认证插件命令:
show variables like 'default_authentication_plugin%';
密码认证插件可以通过以下2种方式改变:
1)通过系统变量default_authentication_plugin改变
在my.ini文件的[mysqld]下设置default_authentication_plugin=mysql_native_password
2)只设置某个用户,通过mysql_native_password的方式认证
修改数据库mysql下面的user表的字段
alter user '用户名'@'主机' identified with mysql_native_password by '密码';
四、数据库连接偶尔超时
升级之后,发现偶尔会有数据库连接超时,这时候重启一下服务就可以解决了
注:
1)数据库版本升级,一定要先升级测试环境,项目测试没有问题后,再升级线上
您在数据库版本升级过程中遇到过什么问题,欢迎评论区分享