iT邦幫忙

1

windows 10 無法從外部訪問 WSL2 docker MySQL

  • 分享至 

  • twitterImage

我的 docker container 數據如下 , 有開 3306 port

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
74a7e237c26a        mysql               "docker-entrypoint.s…"   4 hours ago         Up 4 hours          0.0.0.0:3306->3306/tcp, 33060/tcp   mysql-test

在WSL2內部測試可以使用 127.0.0.1:3306 連結 MySQL

image-20200909153631022

但在外面用 windows 10 gui 工具測試得到 Connection failed - 102(connection_refused)

image-20200909153550602


嘗試1 :

不要用root。另開一個帳號對應。
mysql有鎖root不能遠程的機制。就算給 root@% 也一樣不能遠程。
開一個新帳號給系統權限再試試

結果 : 一樣錯誤

mysql> CREATE USER 'demo'@'%' IDENTIFIED WITH mysql_native_password BY 'demo!';
GRANT ALL PRIVILEGES ON *.* TO 'demo'@'%';Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'demo'@'%';
Query OK, 0 rows affected (0.01 sec)

xxx

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
japhenchen
iT邦超人 1 級 ‧ 2020-09-09 15:49:16
最佳解答

在Docker 上執行
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'password';

您好大神,會出現以下錯誤
另外我有使用 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';添加遠程登錄權限

mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '. TO 'root'@'%' IDENTIFIED BY '123456'' at line 1
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.00 sec)

但添加後 windows 10 還是一樣無法使用GUI連線

我思故我在 ( 親~到我個人頁面追蹤我ლ(╹◡╹ლ) )
我試裝了WSL2跟MYSQL,正常哦,我猜你出了兩個狀況
1、先建立一個帳號,別用root

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

下載正確的MySQL Workbench版本(我猜你下載的Workbench是5.0版的)
https://downloads.mysql.com/archives/workbench/

https://ithelp.ithome.com.tw/upload/images/20200910/20117954UHjokw8ubz.jpg

2

不要用root。另開一個帳號對應。

mysql有鎖root不能遠程的機制。就算給 root@% 也一樣不能遠程。
開一個新帳號給系統權限再試試

感謝大神,但還是一樣,我文中有更新嘗試結果

我要發表回答

立即登入回答