解決Navicat Premium 連接 MySQL 8.0 報(bào)錯(cuò)"1251"的問題分析
人閑太久,努力一下就以為是在拼命。
一、問題
Navicat Premium 連接 MySQL 8.0 報(bào)錯(cuò):
1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

二、原因
MySQL 8.0 改變了密碼認(rèn)證方式。
在 MySQL 8.0 之前版本的密碼認(rèn)證方式為:
mysql_native_password
為了提供更安全的密碼加密方式,從 MySQL 8.0 版本開始,默認(rèn)使用密碼認(rèn)證方式為:
caching_sha2_password
報(bào)錯(cuò) 1251 的原因也很明顯:
Client does not support authentication protocol requested by server;
翻譯為中文就是:“客戶端不支持服務(wù)端請(qǐng)求的認(rèn)證協(xié)議”。
我這里用的 Navicat Premium 11 去連接 MySQL 8.0,因?yàn)榘姹咎停圆恢С?caching_sha2_password 的密碼加密方式?。?/p>
在 MySQL 命令行終端,可以查看版本以及默認(rèn)密碼認(rèn)證方式:
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> # 查看默認(rèn)加密方式 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默認(rèn)全部用戶的密碼加密方式都是caching_sha2_password。
三、解決
解決這個(gè)問題,有兩種方法。
- 方法1:修改
MySQL 8.0的密碼認(rèn)證方式。 - 方法2:安裝新版本
Navicat Premium。
兩種方法都可行,但是加密規(guī)則最好不要亂改,很容易出問題。所以,推薦使用“方法2”。
3.1、修改 MySQL 8.0 密碼認(rèn)證方式
MySQL 命令行終端分別執(zhí)行以下操作:
# 更新root用戶的密碼為"123456", # 注意,這里需要將"123456"換成自己的密碼,請(qǐng)勿使用弱密碼! ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; # 刷新權(quán)限,使密碼更新生效 FLUSH PRIVILEGES;
簡單演示一下:
第一步:進(jìn)入 mysql 命令行終端。
root@ed2a490912e5:/# mysql -u root -p Enter password: mysql>
第二步:查看默認(rèn)密碼認(rèn)證方式。
mysql> use 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>
可以看到,
root用戶密碼認(rèn)證方式為caching_sha2_password。
第三步:修改 root 用戶密碼認(rèn)證方式,如果是其他用戶,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 用戶密碼認(rèn)證方式。
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 | mysql_native_password | +-----------+------------------+-----------------------+ 5 rows in set (0.00 sec)
注意看,
root用戶密碼認(rèn)證方式變成了mysql_native_password。
再次使用Navicat Premium 11 連接 MySQL 8.0,連接成功!

再次提示,修改密碼認(rèn)證方式,很容易出問題,不推薦!
3.2、安裝新版本 Navicat Premium
經(jīng)我測試,Navicat Premium 12 及以上版本均支持 MySQL 8.0 連接。最新版本是 Navicat Premium 15,官網(wǎng)下載地址:
http://www.navicat.com.cn/download/navicat-premium
安裝很簡單,運(yùn)行安裝包,根據(jù)提示一步一步安裝即可。遺憾的是 Navicat Premium 不是免費(fèi)軟件,永久許可證價(jià)格比較昂貴… …官網(wǎng)報(bào)價(jià):人民幣 4,449.0 元,企業(yè)版甚至上萬了。貧窮,讓我流下眼淚,哭唧唧


好在可以破解!??!
具體可以參考:Navicat Premium 15 永久破解安裝教程
免責(zé)申明:僅供技術(shù)交流,如產(chǎn)生法律糾紛與本人無關(guān)。如有侵犯版本,聯(lián)系刪除!
附上一張效果圖:

到此這篇關(guān)于Navicat Premium 連接 MySQL 8.0 報(bào)錯(cuò)“1251”分析解決的文章就介紹到這了,更多相關(guān)Navicat Premium 連接 MySQL 8.0 報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
多次執(zhí)行mysql_fetch_array()的指針歸位問題探討
多次執(zhí)行mysql_fetch_array(),在第二次執(zhí)行的時(shí)候,如果不加處理,就不會(huì)輸出任何內(nèi)容,這種情況下只需要對(duì)循環(huán)指針進(jìn)行復(fù)位即可,感興趣的朋友可以了解下啊,或許對(duì)你有所幫助2013-01-01
MySQL數(shù)據(jù)庫遷移data文件夾位置詳細(xì)步驟
這篇文章主要介紹了MySQL數(shù)據(jù)庫遷移data文件夾詳細(xì)步驟,需要的朋友可以參考下2014-03-03
mysql使用from與join兩表查詢的區(qū)別總結(jié)
這篇文章主要給大家介紹了關(guān)于mysql使用from與join兩表查詢的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法小結(jié)
create_time通常是一個(gè)用于表示某個(gè)實(shí)體或事件創(chuàng)建時(shí)間的字段,在數(shù)據(jù)庫設(shè)計(jì)、日志記錄或許多軟件系統(tǒng)中常見,它存儲(chǔ)的是一個(gè)日期或時(shí)間戳,記錄了數(shù)據(jù)首次被創(chuàng)建的具體時(shí)刻,本文介紹了MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法,需要的朋友可以參考下2024-08-08
一文詳解MYSQL的多版本并發(fā)控制MVCC(Multi-Version Concurrency Co
MVCC是一種用于數(shù)據(jù)庫管理系統(tǒng)的并發(fā)控制技術(shù),允許多個(gè)事務(wù)同時(shí)訪問數(shù)據(jù)庫,而不會(huì)導(dǎo)致讀寫沖突,本文就詳細(xì)的介紹了MVCC的具體用法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
一文詳解Mysql?insert也會(huì)發(fā)生死鎖嗎
死鎖的本質(zhì)是資源競爭,批量插入如果順序不一致很容易導(dǎo)致死鎖,這篇文章主要給大家介紹了關(guān)于Mysql?insert是否也會(huì)發(fā)生死鎖的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
MySQL查詢樹形結(jié)構(gòu)數(shù)據(jù)的兩種方法
本文主要介紹了MySQL查詢樹形結(jié)構(gòu)數(shù)據(jù)的兩種方法,可以使用遞歸查詢或者閉包表來實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11

