Sqlyog安裝后連接mysql數據庫,報錯:2058.
這是密碼加密算法更新導致的,解決如下:
1.打開cmd 連接數據庫:
mysql -h localhost -P 3306 -u root -p123456
2.進入mysql依次執行下面語句
①修改加密規則(注意不要忘記寫分號“;”)
alter user 'root'@'localhost' identified by 'root' password expire never;
②更新密碼為“Root123"
alater user 'root'@'localhost' identified with mysql_native_password by 'Root123';
③刷新權限
flush privileges;
如果是本地安裝的mysql數據庫,執行完以上步驟再連接應該就沒有問題了。
但是在docker中安裝的mysql這樣操作沒有解決問題,而且連密碼都沒有修改成功,不知道是第②步弄錯了還是什么原因,執行以下查詢語句后發現跟本機安裝的mysql查詢出來的內容不一樣,不知道是不是版本問題。
SELECT HOST,USER,PLUGIN FROM mysql.user;
結果如下:
發現多了一行Host值為“%”的,User為“root”的數據,算法依然是caching_sha2_password.
於是再將這個root用的密碼加密算法修改為"mysql_native_password",並將密碼修改為 “Root123”
alter user 'root'@'%' identified with mysql_native_password by 'Root123';
刷新權限
flush privileges;
然后再連接就沒有問題了。
猜想了一下應該是mysql的版本問題,docker中安裝的是最新的8.0.19版本,而本機安裝的是8.0.11,只是猜想沒有驗證,有興趣的可以驗證一下。