在我的Web服务器上,我安装了带有Grafana码头集装箱的Plesk。 服务器上也安装了一个MySQL数据库。
我启动了容器,然后进入Grafana,首先建立了MySQL数据源。
我尝试将localhost:3306作为主机,并粘贴了凭据。 但是在“保存并测试”之后,我得到了错误消息:
拨号TCP 127.0.0.1:3306:连接:连接被拒绝
我认为我的主机地址有问题。 有没有人可以帮助我?
谢谢。
答案 0 :(得分:1)
答案 1 :(得分:0)
出现错误是因为使用127.0.0.1时引用了容器的IP地址。
例如: 在Windows上,您的Docker(如果使用Docker Toolbox)的IP地址为192.168.99.100,而您的PC的IP地址为192.168.99.1
因此,如果您将MySQL数据库托管在本地计算机上,则数据库主机为192.168.99.1,并且您的连接必须引用192.168.99.1:3306
答案 2 :(得分:0)
在Mac上,我通过使用host.docker.internal
获得了成功,因为grafana位于docker容器中,而mysql也正在docker容器中运行。
答案 3 :(得分:0)
您可以通过两个选项连接两个容器:
通过互联网。如果想从grafana访问mysql,可以配置数据源,访问host-ip-adress:default-mysql-address
(3306)。因此 mysql 容器必须在该端口 (docker run -d -p 3306:3306 --name name-mysql-container mysql-image
) 中运行,并且 grafana 可以通过互联网访问。此选项更容易,但这是一个不好的做法。将数据库公开到互联网的原因只是有其他应用程序连接到该数据库,如果没有,则数据库必须关闭互联网。
通过网络。两个容器必须在同一个网络中。您可以创建一个网络(docker network create --driver bridge my_grafana_mysql_network
),然后当您运行两个容器时设置网络(docker run -d -p 3306:3306 --name name-mysql-container --network my_grafana_mysql_network mysql-image
)标志,并且两个容器可以相互看到。然后在来自 grafana 的数据源中调用容器的名称。
提示:您可以使用 docker inspect docker-container-name
来验证两个容器是否在同一网络中并检查容器的名称。很有帮助
提示:您可以使用此命令 docker network ls
列出网络,以检查网络。