如何在docker容器中连接外部mysql服务器

Posted

技术标签:

【中文标题】如何在docker容器中连接外部mysql服务器【英文标题】:How to connect external mysql server in docker container 【发布时间】:2015-01-21 22:56:37 【问题描述】:

我在 docker 容器中构建了一个 Django 应用程序。并在 ip 192.168.1.13 的服务器上运行它。我将 Django settings.py 设置为连接 192.168.1.6 的 mysql 服务器。它是一个外部独立服务器。但是当我运行容器时,它总是说用户 xxx@192.168.1.13 拒绝访问。 Django如何连接到docker主机ip而不是定义的服务器ip?

任何机构可以帮助我解决这个问题?非常感谢。

有两个服务器。

服务器 A 是 192.168.1.13。上面运行着一个 django docker 容器。

服务器 B 是 192.168.1.6。这是一个mysql服务器。

我希望 django 容器连接服务器 B。但它报告无法连接到其主机服务器。

【问题讨论】:

【参考方案1】:

看起来您授予了仅通过 localhost 访问的用户的访问权限。在您的 MySQL 服务器上尝试以下操作:

GRANT ALL PRIVILEGES ON * . * TO 'xxx'@'192.168.1.13';

请注意,上面@后面的IP地址是指MySQL客户端连接的地址(你的Django容器),而不是MySQL服务器的地址。

【讨论】:

感谢您的回复。但我认为你的建议不会奏效。因为 192.168.1.13 是我的 docker 主机。它确实不是 mysql 服务器。 MySQL 服务器 IP 为 192.168.1.6。我在settings.py中设置了它,但是django实例尝试连接192.168.1.13。那是我的问题。 答案中指定的 IP 地址是指用户连接的主机,而不是它连接的主机。你测试过我的命令吗? 谢谢。我太傻了。我误解了你的建议。你的答案是正确的。我的问题解决了。再次感谢您。 IP 可以使用通配符吗?假设我希望192.168.*.* 上的每个人都能连接。 是的,您使用 % 符号作为通配符。比如:user_name@'192.168.%'

以上是关于如何在docker容器中连接外部mysql服务器的主要内容,如果未能解决你的问题,请参考以下文章

docker容器内怎么连接外部的mysql

docker nodejs容器无法连接mysql容器

无法连接在 docker 容器上运行的 mysql 服务器

docker网络

docker容器安装oracle数据库

在 Docker 容器内运行 Spring Boot 应用程序,无法连接 MySQL