简体   繁体   English

无法在 docker 的桥接网络中连接到 mysql

[英]can not connect to mysql in docker's bridge network

I created a MySQL container but can only connect to the database from the host.我创建了一个 MySQL 容器,但只能从主机连接到数据库。

I start the MySQL container in this file:我在这个文件中启动 MySQL 容器:

docker-composer.yml:码头工人作曲家.yml:

version: '3.3'

services:
   db:
     image: mysql:5.7
     ports:
       - "3307:3306"
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

when run docker-compser up , I got this error:运行docker-compser up 时,出现此错误:
MySQL Connection Error: (2002) No route to host MySQL 连接错误:(2002)没有到主机的路由

But I can succeed to connect to the container from the host, like this: mysql -u root -p -h 127.0.0.1 -P 3307但是我可以成功从主机连接到容器,如下所示: mysql -u root -p -h 127.0.0.1 -P 3307

You can try to connect without a port specifying:您可以尝试在不指定端口的情况下进行连接:

WORDPRESS_DB_HOST: db

It turns out to be a firewall problem.原来是防火墙问题。 I am using fedora 32 system.我正在使用fedora 32系统。 And the docker interface using the default zone which will block 80 port and 3306 port. docker 接口使用默认区域,将阻塞 80 端口和 3306 端口。 So, after I bind my docker interface to trusted zone and added some port everything worked.因此,在我将 docker 接口绑定到受信任区域并添加一些端口后,一切正常。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM