Python 3.12.7中ssl模块无wrap_socket属性问题求助
修复Python 3.12.7 + Ubuntu 24.10下mysql.connector的ssl.wrap_socket报错
问题场景
在Ubuntu 24.10系统上使用Python 3.12.7运行MySQL连接脚本时,触发以下报错:
AttributeError: module 'ssl' has no attribute 'wrap_socket'
原因是Python 3.10+已弃用ssl.wrap_socket()接口,而系统预装的mysql.connector版本过低,未适配新的SSL API。
修复方案
方案一:升级mysql-connector-python到官方最新版(推荐)
- 卸载系统预装的旧版本:
sudo apt remove python3-mysql.connector
- 使用pip安装官方维护的最新版:
pip3 install --upgrade mysql-connector-python
- 连接脚本可简化(新版会自动适配认证插件,无需手动指定
auth_plugin,若数据库强制要求mysql_native_password可保留该参数):
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="your_password", database="mydatabase" ) mycursor = mydb.cursor()
方案二:修改系统预装mysql.connector的源码(应急用,不推荐)
若无法升级包,可手动修改源码适配新SSL接口:
- 打开
network.py文件:
sudo nano /usr/lib/python3/dist-packages/mysql/connector/network.py
- 找到
switch_to_ssl方法中的ssl.wrap_socket行,替换为ssl.SSLContext().wrap_socket:
原代码片段:
self.sock = ssl.wrap_socket(
修改后:
self.sock = ssl.SSLContext().wrap_socket(
- 保存退出后重新运行脚本即可。注意:系统更新可能会覆盖此修改,优先使用方案一。
内容的提问来源于stack exchange,提问作者klaus
相关产品推荐
相关产品推荐

