如何使用Grafana Docker连接到MySQL以保护MySQL Server

时间:2018-08-18 06:54:58

标签: docker plesk grafana

在我的Web服务器上,我安装了带有Grafana码头集装箱的Plesk。 服务器上也安装了一个MySQL数据库。

我启动了容器,然后进入Grafana,首先建立了MySQL数据源。

我尝试将localhost:3306作为主机,并粘贴了凭据。 但是在“保存并测试”之后,我得到了错误消息:

拨号TCP 127.0.0.1:3306:连接:连接被拒绝

我认为我的主机地址有问题。 有没有人可以帮助我?

谢谢。

4 个答案:

答案 0 :(得分:1)

仅出于开发目的,我们可以使用“host.docker.internal”

请参阅 official website

中的“我想从容器连接到主机上的服务”部分

enter image description here

答案 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容器中运行。

https://docs.docker.com/docker-for-mac/networking/

答案 3 :(得分:0)

您可以通过两个选项连接两个容器:

  1. 通过互联网。如果想从grafana访问mysql,可以配置数据源,访问host-ip-adress:default-mysql-address(3306)。因此 mysql 容器必须在该端口 (docker run -d -p 3306:3306 --name name-mysql-container mysql-image) 中运行,并且 grafana 可以通过互联网访问。此选项更容易,但这是一个不好的做法。将数据库公开到互联网的原因只是有其他应用程序连接到该数据库,如果没有,则数据库必须关闭互联网。

  2. 通过网络。两个容器必须在同一个网络中。您可以创建一个网络(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 列出网络,以检查网络。