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

本地Python应用用mysql-connector-python连接Docker MySQL失败求助

问题排查与解决

核心矛盾分析

你报错提示Unknown MySQL server host 'mysql',但提供的main.py中host配置的是127.0.0.1,这说明你实际运行的代码大概率和当前提供的不一致:要么是代码里host被误写为mysql,要么是修改代码后未保存就执行了脚本。

针对性解决步骤

1. 修正代码中的主机配置

如果代码里确实把host写成了mysql,直接改成127.0.0.1或localhost即可。原因是:本地Python程序不在Docker Compose创建的专属网络内,无法通过服务名mysql解析容器地址,必须使用宿主机IP(或localhost)+ 映射的端口访问。

2. 若代码配置正确,检查以下点

  • 确认端口映射生效:执行docker ps查看mysql容器的PORTS列,需显示0.0.0.0:3306->3306/tcp。若未显示,重新执行docker-compose down && docker-compose up。
  • WSL2后端适配:如果你的Docker用的是WSL2后端,尝试将host改为host.docker.internal——这是Docker提供的宿主机内部网络别名,解决WSL2与Windows宿主机localhost隔离的问题。
  • 防火墙拦截排查:临时关闭Windows防火墙后重试,或在防火墙规则中允许Python程序访问3306端口。
  • 容器初始化状态:MySQL容器启动后需要几秒完成服务初始化,不要刚启动就运行Python脚本。可通过docker logs mysql查看日志,直到出现ready for connections提示再执行脚本。

额外优化建议

你的docker-compose.yml中expose: - 3306是多余配置,ports已经完成了宿主机与容器的端口映射,expose仅声明容器内部开放端口,对宿主机访问无影响,可直接删除。

内容的提问来源于stack exchange,提问作者yannis van achter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:12:27