未解决的通过 Docker 到 MySQL 服务器的拨号 TCP 问题
无法与在 Docker 中运行的 MySQL 服务器建立连接?你并不孤单。让我们深入研究这个常见问题并探讨潜在的解决方案。
问题:
您遇到“拨号 tcp 127.0.0.1:3306: connect: 连接被拒绝”尝试使用 Go 从 Docker 容器内连接到 MySQL 数据库时出错。您的 MySQL 服务器在 localhost:3306 上正常运行,但与您的 Go 应用程序的连接失败。
解决方案:
问题的症结在于 Docker 的隔离。默认情况下,Docker 容器运行在与主机系统隔离的网络环境中。这种分离可以防止容器直接访问主机提供的服务,包括在本地主机上运行的 MySQL 服务器。
要规避此限制,您可以修改连接字符串以使用以下命令指定主机的 IP 地址:特殊主机名 docker.for.mac.localhost。修改后的连接字符串应该类似于这样:
db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(docker.for.mac.localhost:3306)/"+dbName)
通过将主机名修改为 docker.for.mac.localhost,您的 Docker 容器可以通过网桥与您主机上运行的 MySQL 服务器建立连接.
附加说明:
有关进一步的指导和故障排除提示,请参阅有关网络的 Docker 文档。请记住,此解决方法可能需要额外的网络配置,具体取决于您的具体设置。
以上是如何解决在 Docker 中连接到 MySQL 服务器时出现'拨号 tcp 127.0.0.1:3306: connect: 连接被拒绝”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!