遠程連接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用戶密碼策略修改完畢,如果想修改其他的用戶,仿照上面命令設置即可。