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

How to connect to MySQL with Grafana Docker to lokal MySQL Server

在我的 Web 服务器上,我使用 Plesk 安装了一个 Grafana docker 容器。 服务器上也安装了 MySQL 数据库。

我启动了容器,然后在 Grafana 中设置了一个 MySQL 数据源。

我尝试 localhost:3306 作为主持人,并粘贴了凭据。 但是在 "Save & Test" 之后我收到错误消息:

拨打 tcp 127.0.0.1:3306:连接:连接被拒绝

我想我对我的主机地址有理解上的问题。 有没有人可以帮助我?

谢谢。

您出现错误是因为当您使用 127.0.0.1 时,您引用了容器的 IP 地址。

例如: 在 Windows 上,您的 Docker(如果您使用 Docker 工具箱)的 IP 地址为 192.168.99.100,您的 PC 的 IP 地址为 192.168.99.1

因此,如果您在本地计算机上托管 MySQL 数据库,则数据库主机为 192.168.99.1,您的连接必须引用 192.168.99.1:3306

在 mac 上,我使用 host.docker.internal 通过了,因为 grafana 在 docker 容器中并且 mysql 在 [=17= 中也是 运行 ]容器。

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

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

请参阅 official website

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

您可以使用两个选项连接两个容器:

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