我在 Docker 下的 Ubuntu 18.04 上运行 MySQL 服务器。我需要加载 MySQL 调试器 (dbForge Studio) 来开发复杂的存储过程。dbForge Studio 仅在 Windows 10 下运行。我在网络上找到了一台 Windows 10 PC 并加载了 dbForge Studio。
当我尝试从 Win PC 连接到 MySQL 服务器(在 Ubuntu 上)时出现错误10061, can't connect
。我该如何实现此连接?
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.XX.0.1 netmask 255.255.0.0 broadcast 172.XX.255.255
ether 02:42:e5:9e:83:17 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这是我在docker-compose中对mysql的定义:
mysql:
container_name: "mysql"
restart: unless-stopped
image: mysql:5.7
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --sql_mode='' --general-log=1
environment:
- MYSQL_DATABASE
- MYSQL_PASSWORD
- MYSQL_ROOT_PASSWORD
- MYSQL_USER
volumes:
- data:/var/lib/mysql
- ./mysql/mysql.sql:/docker-entrypoint-initdb.d/mysql.sql
ports:
- "3306:3306"
networks:
- net
答案1
错误10061
意味着网络连接被拒绝,这种情况只会在两种情况下发生:
- 防火墙阻止访问
- 您正在尝试连接
root
对于第一个问题,您需要确认 Docker 容器是在 3306 上监听外部流量,并且my.conf
文件具有绑定,0.0.0.0
而不是默认的127.0.0.1
。
对于第二种选择,不要以 的身份连接root
。创建一个帐户,以便GRANT ALL ON *.* WITH GRANT OPTION
实质上赋予该帐户与 相同的权限root
。
希望这能为你指明正确的方向