node連接mysql數據庫出現Client does not support authentication protocol requested by server;的錯誤


在安裝完MySQL的時候,我們現在一般都使用Navicat來連接數據庫,可惜出現下面的錯誤:1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client。

出現上述問題的原因是:mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之后,加密規則是caching_sha2_password 把mysql用戶登錄密碼加密規則還原成mysql_native_password

我安裝的時候是使用的安裝包去安裝的,所以新建了幾個用戶,cmd命令,連接mysql,查詢系統當中所有的用戶。

1.查看MYSQL數據庫中所有用戶

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;


2.修改加密規則,因為最新版的加密規則好像不一樣,安裝的過程當中是有提示的。

mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;


3.修改用戶的認證規則

mysql> alter user '用戶名'@'%' identified with mysql_native_password by '密碼';


例如我的用戶名是admin,密碼是123456,那么,我修改的規則如下

mysql> alter user 'root'@'%' identified with mysql_native_password by '12345678';

其中還有'用戶名'@'%'和'用戶名'@'localhost'的區別,一個是任意連接,一個是本地連接。

 

4.刷新權限

mysql> flush privileges;


5.停止並重啟服務

mysql> net stop mysql
mysql> net start mysql


現在再去用Navicat去連接數據庫,就不會出現上述的問題了。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM