navicat for mysql 鏈接時報錯:1251-Client does not suppo

客戶端使用navicat for mysql。本地安裝了mysql 8.0。但是在鏈接的時候提示:

主要原因是mysql服務器要求的認證插件版本與客戶端不一致造成的。

打開mysql命令行輸入如下命令查看,系統用戶對應的認證插件:

可以看到root用戶使用的plugin是caching_sha2_password,mysql官方網站有如下說明:

意思是說caching_sha2_password是8.0默認的認證插件,必須使用支持此插件的客戶端版本。

plugin的作用之一就是處理後的密碼格式和長度是不一樣的,類似於使用MD5加密和使用base64加密一樣對於同一個密碼處理後的格式是不一樣的。

解決方法:

我不希望更新本地的客戶端版本,想直接使用原來的環境來鏈接。

解決方法是將root的plugin改成mysql_native_password。相當於降了一級。

mysql官方網站提供了從mysql_old_password升級到mysql_native_password,我們可以仿照這個。官方原文如下:

這裏改成:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

這行代碼有兩層含義,第一:修改root的密碼爲'root',摒棄原來的舊密碼。第二:使用mysql_native_password對新密碼進行編碼。

修改完成後再用客戶端登陸成功:

補充:

如果在修改插件的時候出現錯誤,可現將插件改爲 mysql_old_password,然後再升級成mysql_native_password,方法:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章