使用Python连接MySQL数据库遇OperationalError错误求助
解决MySQL连接错误OperationalError: 2003: Can't connect to MySQL server on 'localhost:3306' (10061)
以下是逐一排查的解决方案:
检查MySQL服务状态
- Windows:打开服务面板(运行
services.msc),找到MySQL服务,确认状态为“正在运行”。如果未运行,右键选择“启动”,或用命令行执行net start mysql。 - 类Unix系统(Linux/macOS):执行
systemctl status mysql查看状态,未运行则执行sudo systemctl start mysql启动服务。
- Windows:打开服务面板(运行
确认端口配置一致
- 检查MySQL配置文件(Windows为
my.ini,类Unix为my.cnf)中的port参数,确保和Python代码中指定的端口一致(默认3306)。如果代码中未显式指定端口,确保配置文件端口为3306;若修改过端口,连接时需添加port=自定义端口参数。
- 检查MySQL配置文件(Windows为
替换localhost为127.0.0.1尝试
部分环境下localhost解析可能异常,修改连接代码中的host为127.0.0.1:import mysql.connector try: cnx = mysql.connector.connect( host="127.0.0.1", user="你的用户名", password="你的密码", database="你的数据库名" ) print("连接成功") cnx.close() except mysql.connector.Error as err: print(f"错误: {err}")排查防火墙拦截
- Windows:临时关闭Windows Defender防火墙测试,或在防火墙规则中添加允许MySQL(3306端口)的入站/出站规则。
- 类Unix系统:检查ufw/iptables规则,确保3306端口允许本地连接,比如执行
sudo ufw allow 3306(针对ufw)。
验证本地连接权限
登录MySQL服务器,执行以下命令检查用户权限:SELECT user, host FROM mysql.user;确保你的数据库用户对应的host为
localhost或%(允许所有来源)。若权限不足,执行:GRANT ALL PRIVILEGES ON 你的数据库名.* TO '你的用户名'@'localhost' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;更新mysql-connector库
旧版本的mysql-connector可能与MySQL服务器版本不兼容,执行命令更新:pip install --upgrade mysql-connector-python
内容的提问来源于stack exchange,提问作者HrishiE
相关产品推荐
相关产品推荐

