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

FastAPI使用0.0.0.0启动时连接Docker MySQL报错如何解决

问题根因
  • 0.0.0.0是仅用于服务端监听的特殊地址,表示监听当前主机所有可用网卡,不能作为客户端请求的目标连接地址使用。
  • 你在database.py的数据库连接串中将MySQL地址写为0.0.0.0属于用法错误:uvicorn --host参数配置的是FastAPI服务的监听地址,和数据库连接的目标地址完全是两个配置项,不要混淆。
  • 报错触发逻辑:当你用127.0.0.1/localhost作为uvicorn监听地址时,Windows系统会自动将应用请求路由到本地回环栈,此时访问错写的0.0.0.0会被系统默认适配到本地回环地址,所以不会报错;当你用0.0.0.0作为uvicorn监听地址时,应用请求走物理网卡路由规则,0.0.0.0不属于合法的目标地址,就会抛出WinError 10049错误。
  • 你使用的Docker启动命令已经配置了-p 3306:3306,将容器端口映射到了宿主机所有网卡的3306端口,本身没有问题不需要调整。
解决方案

修改database.py中的数据库连接串,将MySQL地址替换为127.0.0.1或localhost即可:

# 修改前
engine = create_engine("mysql+pymysql://admin:1234@0.0.0.0:3306/dev")
# 修改后
engine = create_engine("mysql+pymysql://admin:1234@127.0.0.1:3306/dev")

修改完成后再用uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload启动服务,即可同时实现对外暴露服务、正常连接本地Docker部署的MySQL的需求。

内容的提问来源于stack exchange,提问作者Seunghoon Schini Yang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:06:03