最近把mysql从5.7迁移到8.3.0发现连接不上 因为 MySQL 从 8.0 版本开始,新增了
caching_sha2_password
授权插件
技术博客 http://idea.coderyj.com/
1.更换sqlyog 更新到13.1.3之后的版本
2.取消mysql8的加密授权机制
mysql> ALTER USER 'sqlyog'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql8.0.';
Query OK, 0 rows affected (0.03 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.03 sec)
mysql> SELECT user,host,plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
| sqlyog | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
3.更改my.cnf
配置文件
找到这些文件修改 以docker容器为例
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
win 下的文件
C:\Users\Administrator>mysql --help | findstr "my.ini"
C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf D:\Chen\MySoft\mysql-8.1.0-winx64\my.ini D:\Chen\MySoft\mysql-8.1.0-winx64\my.cnf
按顺序找配置文件,找到后打开配置文件,在配置文件的[mysqld]
下添加如下配置
default-authentication-plugin=mysql_native_password
重启mysql服务
4.总结
- 严格来说上述
方案3、方案2
是一样的(不太推荐方案3)。 - 方案3仅是将服务器默认的授权插件改为了
mysql_native_password
,它仅对新创建的用户起作用(前提是创建用户时没有指定授权插件),并不会影响已有的用户的加密方式。如果想使用已有用户连接mysql,需使用方案2重新设置其授权插件及密码。 - 方案1 更新SQLyog的方案还是值得尝试的,毕竟是一劳永逸的事儿。更新SQLyog 13.1.3+后,无论连接用户使用什么授权插件,都可连接上。