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

Python连接MySQL报localhost:3306 10061及数据库已加载错误如何解决

报错核心说明

你遇到的mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)错误属于网络连接层错误,Python进程无法和本地3306端口的MySQL服务建立TCP连接,错误触发阶段还没到校验账号密码、数据库权限的步骤。

常见报错原因
  • MySQL服务未启动:大部分系统下MySQL默认不会配置开机自启,服务未运行时不会监听3306端口
  • MySQL监听配置异常:如果配置文件设置了skip-networking跳过网络连接,或者bind-address绑定了非本地IP,会导致localhost无法连接
  • 端口配置错误:安装MySQL时手动修改了默认端口,或者3306端口被其他程序占用
  • 本地防火墙拦截:系统防火墙拦截了本地进程访问3306端口的请求
  • hosts映射错误:本地hosts文件中localhost没有正确指向127.0.0.1,导致请求发往错误地址
排查解决步骤
  1. 检查MySQL服务运行状态
  • Windows:按下Win+R输入services.msc打开服务列表,找到MySQL开头的服务,若状态为未运行,右键点击「启动」即可,需要开机自启可修改属性中的启动类型为「自动」
  • Linux:执行sudo systemctl status mysql(部分发行版服务名为mysqld),若显示inactive,执行sudo systemctl start mysql启动服务,设置开机自启执行sudo systemctl enable mysql
  • macOS:执行sudo mysql.server status查看状态,未运行的话执行sudo mysql.server start启动
  1. 验证端口和监听配置
    执行端口查询命令:
  • Windows:netstat -ano | findstr 3306
  • Linux/macOS:netstat -tulnp | grep 3306
    如果没有任何输出,说明MySQL未监听网络端口:打开MySQL配置文件(my.ini/my.cnf),删除skip-networking配置项,将bind-address设置为127.0.0.1,修改完成后重启MySQL服务。
    如果查询到的监听端口不是3306,需要在代码连接时新增port=实际端口参数,示例如下:
cnx = mysql.connector.connect(user='admin', password='admin',
                              host='localhost',
                              port=3307,
                              database='sciencefair')
  1. 排查防火墙和hosts配置
    暂时关闭本地防火墙后测试连接,如果连接成功,手动添加防火墙规则放行3306端口的本地请求即可。
    打开本地hosts文件(Windows路径C:\Windows\System32\drivers\etc\hosts,Linux/macOS路径/etc/hosts),确认存在以下两行映射,缺失则手动添加后保存:
127.0.0.1 localhost
::1 localhost
  1. 兼容性测试
    如果上述操作完成后仍报错,可以将代码中的host='localhost'修改为host='127.0.0.1'测试,避免部分环境下localhost优先走Unix socket连接导致的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:09:03