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
相关产品推荐
相关产品推荐

