我无法使用 DataGrip 数据库客户端从本地主机连接到 docker 中的 mysql
Posted
技术标签:
【中文标题】我无法使用 DataGrip 数据库客户端从本地主机连接到 docker 中的 mysql【英文标题】:I can't connect to mysql in docker from my localhost with DataGrip database client 【发布时间】:2020-05-31 16:24:12 【问题描述】:我有以下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。
怎么了?
【问题讨论】:
【参考方案1】:默认情况下,docker-compose 创建一个桥接网络,它将您的应用程序与包括本地主机在内的外部隔离开来。 您需要将隔离网络中的 3306 端口暴露给 localhost。 试试这个。
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/
【讨论】:
以上是关于我无法使用 DataGrip 数据库客户端从本地主机连接到 docker 中的 mysql的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 DataGrip 在本地创建 postgreSQL 数据库
如何使用 DataGrip 连接到 MAMP MySQL 服务器