无法从本地主机连接到mysql容器

我试图build立一个MySQL容器进行开发。

所以我用docker-compose来设置它。

容器和mysql看起来不错。 问题是我想从DBeaver客户端连接到它,我无法find我如何做到这一点。

这是我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" 

UPDATE

我没有尝试使用IP 172.18.0.1进行连接。 我试图连接使用localhost:3306和子IP泊坞窗给它0.0.0.0:3306

UPDATE

在我的Mac上成功连接后,我再次在我的Linux上再次用DBeaver: 在这里输入图像说明

试图与其他工具连接,mysql工作台: 在这里输入图像说明

正如您在官方图像文档中看到的那样:

MYSQL_ROOT_HOST:默认情况下,MySQL创build'root'@'localhost'帐户。 此帐户只能从容器内部连接,需要使用docker exec命令,如从MySQL命令行客户端连接到MySQL中所述。 要允许来自其他主机的连接,请设置此环境variables。 例如,作为默认的Docker网关IP的值“172.17.0.1”将允许来自Docker主机的连接。

所以你必须设置MYSQL_ROOT_HOSTvariables的地址为172.18.0.1 ,你可以在错误信息中看到。