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

如何从远程主机PC2连接PC1上Docker运行的MySQL服务器?

解决远程连接Docker MySQL容器的问题

核心问题分析

出现connect ETIMEDOUT错误的关键原因有两个:

  1. 配置中使用了Docker容器的内部IP(172.17.0.2),该IP仅PC1本地可访问,PC2无法直接路由到这个内部地址
  2. MySQL默认限制仅本地访问,未授权远程用户连接权限

步骤1:修正Node应用的数据库配置

将配置里的host替换为PC1的局域网/公网IP,port改为Docker映射的宿主机端口3307(容器3306端口已映射到PC1的3307端口):

"development": {
  "username": "myusername",
  "password": "mypassword",
  "database": "bidding",
  "host": "PC1的局域网/公网IP", // 示例:192.168.1.100
  "port": "3307",
  "dialect": "mysql"
}

步骤2:授权MySQL用户允许远程连接

默认MySQL用户仅支持本地访问,需为myusername授权远程连接权限:

  1. 在PC1上进入MySQL容器:
docker exec -it bidding_mysql mysql -u root -p

输入设置的<password>完成登录。

  1. 执行授权命令:
  • 允许用户从任意IP连接(便捷但安全性稍低):
GRANT ALL PRIVILEGES ON bidding.* TO 'myusername'@'%' IDENTIFIED BY 'mypassword';
  • 仅允许PC2的IP连接(更安全):
GRANT ALL PRIVILEGES ON bidding.* TO 'myusername'@'PC2的IP地址' IDENTIFIED BY 'mypassword';
  1. 刷新权限使设置生效:
FLUSH PRIVILEGES;

步骤3:检查PC1的防火墙设置

确保PC1的防火墙允许3307端口的入站连接:

  • Windows:在防火墙高级设置中添加入站规则,允许TCP 3307端口
  • Linux:执行ufw allow 3307/tcp(使用ufw防火墙时),或对应系统的防火墙开放命令

步骤4:验证网络连通性

在PC2上测试与PC1的网络连通性:

# 测试IP可达性
ping PC1的IP
# 测试端口是否开放
telnet PC1的IP 3307

若能连通则网络配置正常;若不通,需排查防火墙或网络路由问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:43:18