1. 程式人生 > >mysql8 客戶端連線失敗

mysql8 客戶端連線失敗

使用navicat連線最新的mysql8資料庫,報錯如下

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

這個錯誤並不是由於你設定的密碼強度不夠引起的,因此你無論設定成多麼複雜的密碼都解決不了這個問題

錯誤原因

不同於以往版本,mysql8對root賬號密碼配置預設使用caching_sha2_password外掛

執行以下命令檢視

mysql>use mysql; 
mysql>select
user, host, plugin, authentication_string from user\G;

這裡寫圖片描述

Host列指定了允許使用者登入所使用的IP,比如User=root Host=192.168.1.100。這裡的意思就是說root使用者只能通過192.168.1.100的客戶端去訪問

%是個萬用字元,如果Host=192.168.1.%,那麼就表示只要是IP地址字首為“192.168.1.”的客戶端都可以連線。
如果Host=%,表示所有IP都有連線許可權

為了方便,很多人在開啟遠端連線的時候,都直接把Host改成%

同樣的密碼12345678生成的密文string,第一行是sha2加密的結果,第五行是native加密(之前一直採用的方式)的結果

伺服器命令列使用的是host=localhost AND user=root,遠端連線使用host=% AND user=root

解決方法

alter user '使用者名稱'@'%' IDENTIFIED WITH mysql_native_password by '你的密碼';

另外一種永久解決的方法

vim my.cnf

[mysqld]
default_authentication_plugin=mysql_native_password

但是,這個引數只對新授權的使用者生效,舊的root密碼還是用舊的方式