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

Python 3.12连接本地MySQL报错问题求助

解决Xubuntu 24.04下Python连接MySQL的两类报错问题

一、mysql.connector报AttributeError: module 'ssl' has no attribute 'wrap_socket'

问题原因

Python 3.12移除了ssl.wrap_socket()接口,而Xubuntu 24.04预装的mysql-connector-python版本过旧,未适配该变更,导致调用时出错。

解决方案

  1. 卸载系统自带的旧版本依赖
sudo apt remove python3-mysql.connector
  1. 通过pip安装最新版的mysql-connector-python
pip install --upgrade mysql-connector-python
  1. (可选)如果升级后仍有认证问题,可尝试移除连接参数中的auth_plugin='mysql_native_password',新版本会自动适配MySQL的认证插件。

二、pymysql报OperationalError: (2003, "Can't connect to MySQL server on 'localhost'")

问题原因

使用localhost连接时,pymysql默认优先通过Unix Socket文件连接,但存在两种常见问题:

  • MySQL的Socket文件路径与pymysql默认路径不匹配
  • MySQL服务未正常运行

解决方案

方案1:改用TCP连接(最简单)

将连接参数中的host改为127.0.0.1,强制使用TCP协议连接:

import pymysql

def connectDB():
    return pymysql.connect(
        host="127.0.0.1",
        user="myuser",
        password="mypass",
        database="HomeManagement"
    )

方案2:指定正确的Socket文件路径

  1. 先查询MySQL实际使用的Socket路径:
mysql -u myuser -p -e "show variables like 'socket';"
  1. 在pymysql连接时指定该路径:
import pymysql

def connectDB():
    return pymysql.connect(
        host="localhost",
        user="myuser",
        password="mypass",
        database="HomeManagement",
        unix_socket="/var/run/mysqld/mysqld.sock"  # 替换为查询到的实际路径
    )

方案3:检查MySQL服务状态

确认MySQL服务是否在运行:

sudo systemctl status mysql

若未运行,启动服务:

sudo systemctl start mysql

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:16:18