navicat 連接不上虛擬機上的mysql容器 client does not support authentication pro

一、問題產生

在centOS 通過docker pull mysql下載mysql鏡像併成功啓動mysql容器。

當通過windows主機navicat連接虛擬的mysql時報如下錯誤。Client does not support authentication protocol requested by server; consider upgrading MySQL client


二、原因查找

通過查看網上別人遇到的相關問題,發現是由於navicat版本的問題,出現連接失敗的原因mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之後,加密規則是caching_sha2_password。並提供了兩種解決方案

1.升級navicat,由於navicat是收費的,個人感覺升級會比較麻煩點。

2.把用戶密碼登錄的加密規則還原成mysql_native_password這種加密方式,本人選擇第二種解決方案

三、問題解決

按照步驟

1.通過mysql -uroot -p進入mysql的命令行模式


2.輸入命令修改相關機密方法

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;這裏的password是你正在使用的密碼

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';#更新一下用戶的密碼這裏的password爲你修改的新密碼。

FLUSH PRIVILEGES; #刷新權限,使自己的修改生效。

這時還是連接不上,然後通過telnet3306數據庫對應的接口,出現了8.0.11;S"3<VN,.Y\k4Ycaching_sha2_password這個信息,是修改沒有生效還是其他原因?重啓容器之後還是不行。

然後use mysql;


查詢表中的相關信息 select user,host,plugin from user where user='root';


這時發現了問題,原理剛剛修改的是localhost,對於非本機的連接密碼校驗規則還是沒有變。

 alter user 'root'@'%' identified by 'password' password expire never;

 alter user 'root'@'%' identified with mysql_native_password by 'why';//why是自己新修改的密碼。

 flush privileges;再次刷新一下權限配置。

爲了確定下,重新查一下,select user,host,plugin from user where user='root';


修改好了,再用宿主的window電腦訪問數據庫。


這時已經連接成功,可以開始下步工作了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章