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

如何在Docker for Mac容器内连接宿主机上的MySQL?

需求说明
  • 在Docker for Mac容器内搭建后端服务器
  • 通过该服务器访问宿主机上运行的MySQL
当前问题
  • 无法从Docker for Mac容器内连接到MySQL
已尝试操作
  • 使用host.docker.internal启动容器,命令如下:
docker run --rm -it --add-host=host.docker.internal:host-gateway ubuntu:22.04 sh start.sh
  • 请求MySQL的URL如下:
app@tcp(127.0.0.1:3306)/app_name?parseTime=true&charset=utf8mb4
解决步骤
  1. 修正MySQL连接地址
    容器内的127.0.0.1指向容器自身,而非宿主机。将连接URL中的127.0.0.1替换为host.docker.internal,修改后的URL:
app@tcp(host.docker.internal:3306)/app_name?parseTime=true&charset=utf8mb4
  1. 调整MySQL绑定配置
    宿主机MySQL默认仅绑定127.0.0.1,需修改配置允许外部访问:
  • 找到MySQL配置文件(通常路径为/etc/my.cnf或/etc/mysql/my.cnf)
  • 将bind-address参数改为0.0.0.0,或指定Docker子网IP(如172.17.0.0/16)
  • 重启MySQL服务:sudo systemctl restart mysql
  1. 配置MySQL用户访问权限
    确保连接MySQL的用户允许从容器所在网络访问,执行以下SQL命令:
GRANT ALL PRIVILEGES ON app_name.* TO 'app'@'%' IDENTIFIED BY '你的数据库密码';
FLUSH PRIVILEGES;

若需提升安全性,可将%替换为Docker子网IP段(如172.17.0.0/16)。

  1. 测试容器内连通性
    进入容器内部,用以下命令验证连接:
# 用telnet测试端口连通
telnet host.docker.internal 3306
# 或直接用MySQL客户端连接
mysql -h host.docker.internal -u app -p

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 12:13:21