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

同一Docker网络下其他容器无法连接MySQL容器问题求助

问题根因

你的问题和单主机bridge网络没有关系,完全不需要学习多主机overlay网络来解决,错误出在PyMySQL连接配置的端口参数错误。

你启动MySQL容器时使用的-p 3319:3306是宿主机端口到容器内部端口的映射规则,该规则仅适用于从宿主机本身或宿主机外的设备访问MySQL的场景。两个容器同属net_a内部网络时,通信直接走Docker内置的网络栈,需要访问MySQL容器内部实际监听的端口,也就是默认的3306,不是宿主机映射后的3319。

修复方案

把你的PyMySQL连接代码里的port=3319改成port=3306即可:

import pymysql.cursors
connection = pymysql.connect(
    host="mysql_a",
    user="root",
    password="passwd",
    database="db_a",
    port=3306, 
    charset="utf8"
)
cur = connection.cursor()

其他可能的排查项

如果修改端口后仍有问题,可以按以下顺序排查:

  • 确认MySQL容器已经完成初始化启动:MySQL首次启动需要执行初始化逻辑,耗时通常在10-60秒不等,未完全启动时访问也会抛出连接拒绝错误
  • 确认你已经在MySQL容器内创建了db_a数据库,否则连接时会抛出未知数据库的错误
  • 可以在业务容器内执行nc -zv mysql_a 3306验证端口连通性,返回succeeded说明容器间端口通信正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:54:02