叙述
工作中一直使用的是MySql 5.6版本,想着MySQL8已經釋出好幾年了,本地安裝個測試資料庫看看,但是安裝完成後,用Navicat連接配接,一直報2059錯誤,真是奇了怪了。
排查
晚上查了原因,說是在MySql8之前的版本,預設的加密規則是
mysql_native_password
,而在MySql8後的版本,預設的加密規則已經調整為
caching_sha2_password
,由于Navicat不支援最新的
caching_sha2_password
加密規則,導緻連接配接出錯。
解決方案
知道原因後,解決起來也很簡單,修改資料庫使用者的加密規則即可。
mysql -uroot -p ## 登入資料庫
use mysql;
ALTER USER 'root'@'%' IDENTIFIED BY 'abc123' PASSWORD EXPIRE NEVER; ##修改加密規則,其中abc123為修改後的密碼
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc123';##修改密碼
FLUSH PRIVILEGES; #重新整理權限
經過上述操作後,再用Navicat連接配接資料庫,就可能正常連接配接。