You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python连接MySQL时出现ConnectionRefusedError(10061)错误的原因及解决方法

Python连接MySQL时出现ConnectionRefusedError(10061)错误的原因及解决办法

我之前也碰到过一模一样的问题,别慌,咱们一步步来排查可能的原因,对应解决就行:

常见原因及解决方法

1. MySQL服务根本没启动

这是最常见的原因!你的本地MySQL服务器都没跑起来,Python自然连不上。

  • 排查方法:Windows按Win+R输入services.msc,在服务列表里找MySQL相关的服务(比如MySQL80,名字可能因版本不同而异),看状态是不是“正在运行”。
  • 解决办法:如果没运行,右键点击“启动”;也可以用命令行(管理员身份)启动:net start MySQL80(把MySQL80换成你的实际服务名)。要是服务列表里找不到MySQL,那可能是MySQL没安装好,得重新安装。

2. 端口号不匹配

你代码里用的是默认的3306端口,但如果MySQL配置了其他端口(比如3307),就会连接被拒。

  • 排查方法:找到MySQL的配置文件my.ini(一般在MySQL安装目录的data或my文件夹里),搜索port字段,看实际端口是多少。
  • 解决办法:如果端口不是3306,就在Python代码的connect里加上port="你的端口号",比如:
mydb = mysql.connector.connect(
    host = "localhost",
    user = "root",
    password = "xxxxx",
    database='xxxxx',
    port=3307  # 换成你的实际端口
)

3. 本地主机解析问题

有时候localhost的解析会出问题,换成127.0.0.1试试,这是本地回环地址,更直接。

  • 解决办法:把代码里的host = "localhost"改成host = "127.0.0.1"再试。

4. 防火墙拦截了连接

Windows防火墙或者第三方杀毒软件的防火墙,可能把3306端口的连接请求给拦了。

  • 排查方法:暂时关闭防火墙,然后重新运行代码,如果能连上了,就说明是防火墙的问题。
  • 解决办法:给MySQL服务或者你的Python程序添加防火墙允许规则,或者手动开放3306端口的入站和出站权限。

5. MySQL配置限制了本地连接

  • 情况一:MySQL的bind-address设置成了其他IP,导致不接受本地连接。
    • 解决:打开my.ini,把bind-address改成127.0.0.1(只允许本地连)或者0.0.0.0(允许所有IP连),然后重启MySQL服务。
  • 情况二:你的MySQL账号没有本地连接的权限(比如账号只能远程登录)。
    • 解决:登录MySQL客户端,执行以下命令给root账号添加本地权限:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的密码';
    FLUSH PRIVILEGES;
    

额外小提示

你可以先在MySQL客户端(比如MySQL Workbench、Navicat)用和代码里一样的host、用户名、密码、数据库名连接试试,如果客户端都连不上,那问题肯定在MySQL本身或者配置上,先把客户端连接问题解决了,再试Python代码就容易多了。

备注:内容来源于stack exchange,提问作者Shreeyansh Singh Sajwan

火山引擎 最新活动