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

Python连接MySQL遇mysql.connector.errors.DatabaseError:2005错误求助

解决MySQL连接错误:mysql.connector.errors.DatabaseError: 2005 (HY000): Unknown MySQL server host

这个错误我之前排查过好几次,核心就是Python找不到你指定的MySQL服务器主机。结合你贴出的代码:

import mysql.connector 
mydb = mysql.connector.connect(
    host="localhost", 
    user="myusername", 
    password="mypassword" 
) 
print(mydb)

咱们从最基础的点一步步来排查:

1. 先确认MySQL服务有没有在运行

这是最容易忽略的点:

  • Windows用户:按Win+R输入services.msc打开服务管理器,找到MySQL服务,看状态是不是“正在运行”,没启动的话右键点“启动”就行。
  • Linux/macOS用户:终端输入sudo systemctl status mysql(Linux)或者brew services list mysql(用brew装的MySQL),如果显示未激活,就用sudo systemctl start mysql启动服务。

2. 换个host参数试试

有时候localhost的DNS解析会出问题,换成本地回环IP127.0.0.1说不定就能解决:

import mysql.connector 
mydb = mysql.connector.connect(
    host="127.0.0.1", 
    user="myusername", 
    password="mypassword" 
) 
print(mydb)

3. 检查你的MySQL用户有没有本地连接权限

登录MySQL终端(输入mysql -u myusername -p,输密码进入),执行这条SQL看看用户的权限配置:

SELECT user, host FROM mysql.user WHERE user = 'myusername';

如果结果里的host不是localhost或者%(允许任意主机连接),就需要给用户授权本地连接:

GRANT ALL PRIVILEGES ON *.* TO 'myusername'@'localhost' IDENTIFIED BY 'mypassword';
FLUSH PRIVILEGES;

要是你用127.0.0.1连接,就把上面的localhost换成127.0.0.1。

4. 看看防火墙有没有拦截MySQL端口

MySQL默认用3306端口,你的防火墙(Windows Defender防火墙、Linux ufw等)可能拦截了本地的3306端口连接。可以暂时关闭防火墙测试一下,如果能连上,再给MySQL添加防火墙允许规则。

5. 更新mysql-connector-python版本试试

旧版本的连接器和新版本MySQL可能存在兼容性问题,终端执行这条命令更新:

pip install --upgrade mysql-connector-python

要是以上步骤都试过还是不行,你可以告诉我你的MySQL版本、操作系统,还有ping localhost的执行结果,咱们再深入排查~

内容的提问来源于stack exchange,提问作者Neema Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:12:39