【发布时间】:2017-03-18 22:10:02
【问题描述】:
我正在尝试设置一个 MySQL 容器进行开发。
所以我使用docker-compose 进行设置。
容器和 mysql 看起来没问题。问题是我想从 DBeaver 客户端连接到它,但我找不到我是如何做到的。
这是我的docker-compose.yml:
version: '2'
services:
db:
image: 'mysql:5.7'
volumes:
- '~/dev/dbs-data/mysql:/var/lib/mysql'
restart: 'always'
expose:
- '3306'
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: 'pass'
MYSQL_DATABASE: 'db'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'pass'
当我尝试从DBeaver 连接它时,我得到:
java.sql.SQLException: null, message from server:
"Host '172.18.0.1' is not allowed to connect to this MySQL server"
更新
我没有尝试使用 IP 172.18.0.1 进行连接。我尝试使用localhost:3306、127.0.0.1:3306 进行连接,并使用子 IP docker 给了它0.0.0.0:3306
更新
【问题讨论】:
-
它在这里工作。你可以在 shell 中连接到你的 MySQL 服务器吗?
-
@Zoyd 我没有。我从来没有在终端上使用过它。我需要下载mysql才能在终端上使用吗?
-
您是在 Linux 主机上运行它,还是在 Windows 或 macOS 上使用 Docker Machine 之类的东西?如果您使用的是 Docker Machine,则必须连接到 Docker Machine VM 的 IP 地址,而不是
localhost。另外,将端口映射条目更改为3306:3306,去掉其中的localhost部分... -
我使用的是 Linux,Ubuntu。
-
然后将端口定义更改为
3306:3306并尝试使用您的 MySQL 客户端连接到 localhost:3306。
标签: mysql docker docker-compose