如何将Docker 下运行在 Ubuntu 上的 MySQL 服务器共享给 Windows PC?

如何将Docker 下运行在 Ubuntu 上的 MySQL 服务器共享给 Windows PC?

我在 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意味着网络连接被拒绝,这种情况只会在两种情况下发生:

  1. 防火墙阻止访问
  2. 您正在尝试连接root

对于第一个问题,您需要确认 Docker 容器在 3306 上监听外部流量,并且my.conf文件具有绑定,0.0.0.0而不是默认的127.0.0.1

对于第二种选择,不要以 的身份连接root。创建一个帐户,以便GRANT ALL ON *.* WITH GRANT OPTION实质上赋予该帐户与 相同的权限root

希望这能为你指明正确的方向

相关内容