最近下載新的MySQL8.0 來使用的時候, 通過sqlyog、或者程式中連接資料庫時,提示:Authentication plugin 'caching_sha2_password' cannot be loaded 的錯誤,經查看發現,8.0改變了 身份驗證插件 , 打開 my.ini (或者m ...
最近下載新的MySQL8.0 來使用的時候, 通過sqlyog、或者程式中連接資料庫時,提示:Authentication plugin 'caching_sha2_password' cannot be loaded
的錯誤,經查看發現,8.0改變了 身份驗證插件 , 打開 my.ini (或者my.cofg) 可以看到變更了 5.7及其以前的方式: mysql_native_password
解決
Authentication plugin ‘caching_sha2_password’ cannot be loaded 的方法,可以往你的連接工具、或者程式應用顯示指定身份驗證方式,或者直接改為以前的版本方式:
你可以使用如下方式:
這裡root的密碼改為hovertree,使用老版本的身份驗證插件方式:
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY ‘hovertree’;
先來解釋一下為什麼會報這個錯,在mysql8之前的版本使用的密碼加密規則是mysql_native_password,但是在mysql8則是caching_sha2_password。
解決方案有很多,我是創建了一個新用戶,並指定加密規則為:mysql_native_password,這樣的話,僅需要執行以下語句即可:
create user 'your username'@'%' identified with mysql_native_password by 'your password'
也可以直接修改my配置文件,將預設密碼規則設置為mysql_native_password,刷新許可權並重置root密碼即可。
default_authentication_plugin=mysql_native_password
如果想用新的caching_sha2_password也是可以的,java的話mysql已經推出了新的mysql-connector-java包,引入後,驅動使用com.mysql.cj.jdbc.driver即可,這個方案本地試了。沒有問題。
在安裝mysql8的時候如果選擇了密碼加密,之後用客戶端連接比如navicate,會提示客戶端連接caching-sha2-password
,是由於客戶端不支持這種插件,可以通過如下方式進行修改:
#修改加密規則
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新密碼(mysql_native_password模式)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Hovertree';
其中 Hovertree 為新密碼