无法从本地主机连接到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_HOST
variables的地址为172.18.0.1
,你可以在错误信息中看到。