You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中MariaDB/MySQL容器拒绝其他容器连接的问题求助

MySQL容器无法接收其他容器连接的问题排查与解决

问题详情

MySQL容器无法接收来自其他容器的连接,操作及现象如下:

  1. 创建自定义桥接网络:
docker network create -d bridge mysql
  1. 启动数据库容器:
docker run --name mysql_db -d \
    --network mysql \
    -e MYSQL_ROOT_PASSWORD=pass \
    -e MYSQL_USER=user \
    -e MYSQL_PASSWORD=pass \
    -e MYSQL_DATABASE=database \
    -e MYSQL_ROOT_HOST=% \
    mariadb 
  1. 数据库容器日志显示已就绪:
$ docker logs mysql_db
2022-11-06 21:46:01 0 [Note] mariadbd: ready for connections.
Version: '10.9.3-MariaDB-1:10.9.3+maria~ubu2204'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
  1. 同一网络下的第二个容器连接MySQL失败:
$ php -r "new mysqli('mysql_db','root', 'pass','database');"

$ PHP Warning:  mysqli::__construct(): (HY000/2002): Connection refused in Command line code on line 1
  1. 第二个容器ping数据库容器网络不通:
# ping mysql_db
PING mysql_db (172.18.0.2): 56 data bytes
....
--- mysql_db ping statistics ---
6 packets transmitted, 0 packets received, 100% packet loss

使用mysql:5.7镜像时出现相同问题。


解决步骤

1. 确认第二个容器已加入目标网络

检查第二个容器的网络归属:

docker inspect <第二个容器名称/ID> | grep Networks

若输出无mysql网络,执行以下命令将其加入:

docker network connect mysql <第二个容器名称/ID>

2. 验证数据库容器的网络配置

确认数据库容器正常挂载在mysql网络:

docker inspect mysql_db | grep Networks

若网络配置异常,备份数据后重建容器:

docker stop mysql_db && docker rm mysql_db
# 重新执行原启动命令创建容器

3. 检查数据库监听地址

部分情况下数据库仅监听127.0.0.1,导致外部容器无法访问。进入容器查看监听端口:

docker exec -it mysql_db netstat -tulpn | grep 3306

若输出为127.0.0.1:3306,修改MySQL配置:

  • 进入容器编辑配置文件(如/etc/mysql/my.cnf),将bind-address改为0.0.0.0
  • 重启容器:docker restart mysql_db

4. 测试Docker网络的DNS解析

若ping容器名称不通,先尝试用容器IP直接连接:

# 获取数据库容器IP
docker inspect mysql_db | grep "IPAddress"
# 在第二个容器中用IP连接测试
php -r "new mysqli('172.18.0.2','root', 'pass','database');"

若IP可连接但名称不行,重启Docker服务:

systemctl restart docker

5. 排查宿主机防火墙

临时关闭宿主机防火墙测试是否为规则阻断:

# Ubuntu系统示例
ufw disable
# 测试完成后重新开启:ufw enable

内容的提问来源于stack exchange,提问作者dsl400

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:10:24