在安裝完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去連接數據庫,就不會出現上述的問題了。