1. 程式人生 > 資料庫 >解決Navicat Premium 連線 MySQL 8.0 報錯"1251"的問題分析

解決Navicat Premium 連線 MySQL 8.0 報錯"1251"的問題分析

人閒太久,努力一下就以為是在拼命。

一、問題

Navicat Premium 連線 MySQL 8.0 報錯:

1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

低版本Navicat Premium 連線msyql8報錯

二、原因

MySQL 8.0 改變了密碼認證方式。

MySQL 8.0 之前版本的密碼認證方式為:

mysql_native_password

為了提供更安全的密碼加密方式,從 MySQL 8.0 版本開始,預設使用密碼認證方式為:

caching_sha2_password

報錯 1251 的原因也很明顯:

Client does not support authentication protocol requested by server;

翻譯為中文就是:“客戶端不支援服務端請求的認證協議”。

我這裡用的 Navicat Premium 11 去連線 MySQL 8.0,因為版本太低,所以不支援 caching_sha2_password 的密碼加密方式!!

MySQL 命令列終端,可以檢視版本以及預設密碼認證方式:

root@程式設計師的一天:/# mysql -u root -p   
Enter password: 
Welcome to the MySQL monitor. 

mysql> 
mysql> 
# 檢視版本
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.21 |
+-----------+
1 row in set (0.00 sec)

mysql> 
mysql> 
# 檢視預設加密方式
mysql> 
mysql> use mysql;

Database changed

mysql> 
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host  | user    | plugin    |
+-----------+------------------+-----------------------+
| %   | root    | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys  | caching_sha2_password |
| localhost | root    | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

mysql> 

可以看到, MySQL 8.0 預設全部使用者的密碼加密方式都是 caching_sha2_password

三、解決

解決這個問題,有兩種方法。

  • 方法1:修改 MySQL 8.0 的密碼認證方式。
  • 方法2:安裝新版本 Navicat Premium

兩種方法都可行,但是加密規則最好不要亂改,很容易出問題。所以,推薦使用“方法2”。

3.1、修改 MySQL 8.0 密碼認證方式

MySQL 命令列終端分別執行以下操作:

# 更新root使用者的密碼為"123456",
# 注意,這裡需要將"123456"換成自己的密碼,請勿使用弱密碼!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

# 重新整理許可權,使密碼更新生效
FLUSH PRIVILEGES;

簡單演示一下:

第一步:進入 mysql 命令列終端。

root@ed2a490912e5:/# mysql -u root -p
Enter password: 

mysql> 

第二步:檢視預設密碼認證方式。

mysql> use mysql;
mysql> select host,plugin from user;
+-----------+------------------+-----------------------+
| host  | user    | plugin    |
+-----------+------------------+-----------------------+
| %   | root    | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys  | caching_sha2_password |
| localhost | root    | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

mysql> 

可以看到,root 使用者密碼認證方式為 caching_sha2_password

第三步:修改 root 使用者密碼認證方式,如果是其他使用者,root 替換為其他使用者名稱即可。等同於更新一下密碼!

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK,0 rows affected (0.05 sec)

mysql> FLUSH PRIVILEGES;
Query OK,0 rows affected (0.04 sec)

第四步:再次檢視 root 使用者密碼認證方式。

mysql> select host,plugin from user;
+-----------+------------------+-----------------------+
| host  | user    | plugin    |
+-----------+------------------+-----------------------+
| %   | root    | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys  | caching_sha2_password |
| localhost | root    | mysql_native_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

注意看,root 使用者密碼認證方式變成了 mysql_native_password

再次使用Navicat Premium 11 連線 MySQL 8.0連線成功

連線成功

再次提示,修改密碼認證方式,很容易出問題,不推薦!

3.2、安裝新版本 Navicat Premium

經我測試,Navicat Premium 12 及以上版本均支援 MySQL 8.0 連線。最新版本是 Navicat Premium 15,官網下載地址:

http://www.navicat.com.cn/download/navicat-premium

安裝很簡單,執行安裝包,根據提示一步一步安裝即可。遺憾的是 Navicat Premium 不是免費軟體,永久許可證價格比較昂貴… …官網報價:人民幣 4,449.0 元,企業版甚至上萬了。貧窮,讓我流下眼淚,哭唧唧

非商業版報價
企業版報價

好在可以破解!!!
具體可以參考:Navicat Premium 15 永久破解安裝教程

免責申明:僅供技術交流,如產生法律糾紛與本人無關。如有侵犯版本,聯絡刪除!

附上一張效果圖:

成功連線

到此這篇關於Navicat Premium 連線 MySQL 8.0 報錯“1251”分析解決的文章就介紹到這了,更多相關Navicat Premium 連線 MySQL 8.0 報錯內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!