如何使用 Grafana Docker 连接到本地 MySQL 服务器

3
在我的 Web 服务器上,我使用 Plesk 安装了一个 Grafana Docker 容器。服务器上还安装了一个 MySQL 数据库。
我启动了容器,并在 Grafana 中设置了一个 MySQL 数据源。
我尝试使用 localhost:3306 作为主机,并粘贴了凭据。但是在“保存并测试”后,我收到了错误消息:
dial tcp 127.0.0.1:3306: connect: connection refused
我认为我对主机地址有误解。是否有人可以帮助我?
谢谢。

1
localhost/ 127.0.0.1在容器中通常指的是容器内的另一个服务。您可能需要查找MySQL监听的服务器的另一个本地地址。 - undefined
4个回答

5

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

请参考官方网站中的“I WANT TO CONNECT FROM A CONTAINER TO A SERVICE ON THE HOST”部分(链接)

enter image description here


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列出网络,以检查网络。


0
你出现错误是因为当你使用127.0.0.1时,你引用的是容器的IP地址。
例如: 在Windows上,如果你使用Docker Toolbox,那么你的Docker的IP地址是192.168.99.100,而你的PC的IP地址是192.168.99.1。
所以,如果你将MySQL数据库托管在本地机器上,那么数据库的主机是192.168.99.1,你的连接必须引用192.168.99.1:3306。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接