You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署的容器化MySQL数据库无法被局域网用户远程访问求助

局域网Docker容器MySQL无法远程访问排查解决步骤

错误码ERROR 2003 (HY000)的110错误为连接超时,属于网络层面不通,你本地及自行用局域网IP可正常访问说明MySQL权限配置无问题,按以下步骤排查即可:

  • 第一步:确认WSL内Docker容器端口绑定正确
    进入Ubuntu终端执行docker ps,查看对应mysql容器的PORTS列,需确认显示为0.0.0.0:3306->3306/tcp,如果仅绑定了127.0.0.1:3306,需要重新启动容器时指定绑定所有地址:
    docker run --name=mysqlproject -e MYSQL_ROOT_HOST=% -p 0.0.0.0:3306:3306 -d mysql/mysql-server
    
  • 第二步:排查WSL2 NAT模式端口转发规则
    WSL2默认采用NAT网络,Windows需要做端口转发才能将局域网流量转发到WSL内部:
    1. 在Ubuntu终端执行ip a,查看eth0网卡的IP地址(通常为172开头的私网地址)
    2. 在Windows cmd执行netsh interface portproxy show all,确认存在监听0.0.0.0:3306、转发到上述WSL IP 3306端口的规则
    3. 如无对应规则可手动添加,命令为:
    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=3306 connectaddress=<替换为WSL的eth0 IP> connectport=3306
    
    如果无权限修改Windows端口代理,可将WSL2调整为桥接模式:在Windows用户目录下创建.wslconfig文件,写入以下配置后执行wsl --shutdown重启WSL即可,重启后WSL会直接获取和主机同网段的局域网IP,其他用户直接访问该WSL IP的3306端口即可:
    [wsl2]
    networkingMode=bridged
    vmSwitch=<替换为你主机Wifi对应的虚拟交换机名称>
    
  • 第三步:放通WSL内部防火墙
    在Ubuntu终端执行sudo ufw status,如果防火墙为开启状态,执行以下命令放通3306端口:
    sudo ufw allow 3306/tcp
    
  • 第四步:绕路解决方案(无权限修改系统配置时可用)
    可通过SSH端口转发实现访问:其他局域网用户执行以下命令,将本地3306端口映射到你主机的3306端口,之后本地访问127.0.0.1:3306即可连接MySQL:
    ssh -L 3306:127.0.0.1:3306 <你的Windows用户名>@<你的主机局域网IP>
    

内容的提问来源于stack exchange,提问作者dendio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:39:00