1. 程式人生 > >docker4:外部Navicat連結docker內容器mysql,步驟及錯誤及解決辦法...晚上才改出來錯誤,憋了一下午真是太難受了...

docker4:外部Navicat連結docker內容器mysql,步驟及錯誤及解決辦法...晚上才改出來錯誤,憋了一下午真是太難受了...

OK,lets go.

啟動mysql服務:

$ docker exec -it forth-mysql bash

選擇mysql資料庫

mysql> use mysql
mysql> select user,host,authentication_string from user;



紅框的這個root,host是%,如果host是localhost的話,外部(Navicat)是不能訪問的這個資料庫的(意思就是沒有遠端連線許可權)

新增這個使用者時用的這個語句:

mysql> set password for "root"@"%"=password("123456");

這個可能不能用,這塊可以百度一下,有很多。

(怎麼總感覺自己做夢夢見過新增連結這步...最近學docker學魔怔了...做夢都是)

然後去navicat連線:

先在docker裡查一下機器IP

$ docker machine IP 

查到192.168.99.100 ,其實這步不查也行,因為只要是Windows下的docker都是這個IP。

順便這塊有個小沒啥用知識點:

$ docker inspect --format '{{ .NetworkSetting.IPAddress}}' forth-mysql

我也不知道這個是查出個啥IP,大概是forth-mysql這個服務例項的IP???

言歸正傳,這時候我們去Navicat輸入了host,埠號(在啟動服務是設定的,run那步),賬號,密碼後,點選測試連線,會發現出現了這個錯誤:

2059 - authentication plugin 'caching_sha2_password' ...

這個問題憋了我一下午...琢磨來琢磨去,就差去C區找後端打聽了...

然後發現網上有答案...我到底是為什麼當時沒去百度呢???因為這個錯誤提示不能複製嗎???

OK,話不多說,解決辦法在這:

這倆其實是一個意思,就是這個命令:

mysql> alter user "root"@"%" identified with mysql_native_password by "123456";

這個真的可以解決,然後再用Navicat連結,成功啦哈哈哈~

截個圖慶祝一下


ヾ(◍°∇°◍)ノ゙加油~