我无法使用 DataGrip 数据库客户端从本地主机连接到 docker 中的 mysql
I can't connect to mysql in docker from my localhost with DataGrip database client
我有以下 docker-compose.yml
文件:
version: '3.2'
services:
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=verysecret
- MYSQL_DATABASE=yii2advanced
- MYSQL_USER=yii2advanced
- MYSQL_PASSWORD=secret
我通过 docker-compose up -d
运行 它。但是我无法从 SQL 客户端连接到我的数据库(我使用 JetBrains 的 DataGrip)。这是我的配置:
密码当然是secret
。我已经尝试为 yii2advanced
用户检查允许的主机:
如您所见,我的 yii2advanced
允许来自任何主机的连接。我尝试更改 mysqld.cnf
并设置 bind-address = 0.0.0.0
。试图将 bind-address
设置为 *
。试图在我的 SQL 客户端的设置中设置 127.0.0.1
而不是 172.17.0.1
。试图手动创建一个具有完全权限的新用户。没有效果。问题仍然存在。我无法从本地主机连接到容器中的 mysql。
怎么了?
默认情况下,docker-compose 创建一个桥接网络,将您的应用程序与外部隔离,包括本地主机。
您需要将隔离网络的 3306 端口暴露给本地主机。
试试这个。
version: '3.2'
services:
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=verysecret
- MYSQL_DATABASE=yii2advanced
- MYSQL_USER=yii2advanced
- MYSQL_PASSWORD=secret
ports:
- 3306:3306 # <host port>:<container port>
很好读 docker 网络部分。 https://docs.docker.com/network/
我有以下 docker-compose.yml
文件:
version: '3.2'
services:
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=verysecret
- MYSQL_DATABASE=yii2advanced
- MYSQL_USER=yii2advanced
- MYSQL_PASSWORD=secret
我通过 docker-compose up -d
运行 它。但是我无法从 SQL 客户端连接到我的数据库(我使用 JetBrains 的 DataGrip)。这是我的配置:
密码当然是secret
。我已经尝试为 yii2advanced
用户检查允许的主机:
如您所见,我的 yii2advanced
允许来自任何主机的连接。我尝试更改 mysqld.cnf
并设置 bind-address = 0.0.0.0
。试图将 bind-address
设置为 *
。试图在我的 SQL 客户端的设置中设置 127.0.0.1
而不是 172.17.0.1
。试图手动创建一个具有完全权限的新用户。没有效果。问题仍然存在。我无法从本地主机连接到容器中的 mysql。
怎么了?
默认情况下,docker-compose 创建一个桥接网络,将您的应用程序与外部隔离,包括本地主机。
您需要将隔离网络的 3306 端口暴露给本地主机。
试试这个。
version: '3.2'
services:
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=verysecret
- MYSQL_DATABASE=yii2advanced
- MYSQL_USER=yii2advanced
- MYSQL_PASSWORD=secret
ports:
- 3306:3306 # <host port>:<container port>
很好读 docker 网络部分。 https://docs.docker.com/network/