远程连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法

远程连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法

问题描述:

今天在阿里云租了一个服务器,当我用sqlyog远程连接mysql时,报了plugin caching_sha2_password could not be loaded错,即无法加载插件缓存sha2密码,但是我在cmd窗口就可以访问,在网上找了很多解决方法都没有解决,最后找到了原因。在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是mysql_native_password,服务器可以正常连接,本地cmd窗口 mysql -hxx.xx.xx.xx -P3306 -uroot -pRoot123. 可以正常连接,所以是我的sqlyog版本太旧了。

解决办法:

网上有两种解决办法,一种就是升级sqlyog,一种是修改mysql默认身份验证插件。

1. 升级SQLyog

第一种就不用说了,SQLyog-13.1.6-0.x64是默认支持mysql8.0以上身份验证,把低版本的sqlyog升级到13.1.6就可以解决。

2. 修改身份验证插件

首先登录mysql

mysql -hlocalhost -uroot -pRoot123.

这里跟很多博主都是一样的操作,但是这方法只能解决本地的连接问题,远程连接还是有问题。下面的123456是自己的密码

# 修改加密规则(非必须)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123.' PASSWORD EXPIRE NEVER; 
# 更新用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Root123.'; 
# 刷新权限
FLUSH PRIVILEGES;
# 重置密码(==非必须==)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123.';

如果你需要使用远程登录,将localhost 改为%就可以解决远程连接的问题。

# 修改加密规则(非必须)
ALTER USER 'root'@'%' IDENTIFIED BY 'Root123.' PASSWORD EXPIRE NEVER; 
# 更新用户的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Root123.';
# 刷新权限
FLUSH PRIVILEGES;
# 重置密码(==非必须==)
ALTER USER 'root'@'%' IDENTIFIED BY 'Root123.';

至此本地和远程root用户密码策略修改完毕,如果想修改其他的用户,仿照上面命令设置即可。


Tags: