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

MySQL Python Connector报错:wrap_socket()收到意外参数'ciphers'求助

解决Python 2.6.6连接MySQL时的wrap_socket()参数错误

我之前维护老项目时碰到过一模一样的版本组合坑,给你详细说下问题出在哪以及怎么解决:

问题根源

你遇到的TypeError: wrap_socket() got an unexpected keyword argument 'ciphers',核心原因是版本兼容性不匹配:

  • Python 2.6.6的标准库ssl模块里,wrap_socket()方法根本没有ciphers这个参数;
  • 而你用的mysql-connector-python-2.1.7,在处理SSL相关逻辑时,不管服务器是否禁用SSL,内部代码依然会尝试传递ciphers参数给ssl.wrap_socket(),直接触发了这个错误。

可行解决方案

1. 降级mysql-connector-python到兼容版本

这是最稳妥的方案,因为mysql-connector-python 2.1.x系列已经不再对Python 2.6提供完整支持了。你可以降级到2.0.x系列的稳定版本,比如2.0.4:

pip install mysql-connector-python==2.0.4

这个版本的连接器会适配Python 2.6的ssl模块,即使服务器禁用SSL,也不会传递不支持的ciphers参数。

2. 手动修改连接器源码(应急临时方案)

如果暂时不能降级版本,可以尝试修改连接器的源码来绕过这个问题:

  • 找到你的Python环境中mysql连接器的安装路径,比如site-packages/mysql/connector;
  • 打开处理SSL的相关文件(比如connection.py或者ssl.py),找到调用ssl.wrap_socket()的代码行;
  • 把行里的ciphers=xxx参数去掉,比如将:
    ssl.wrap_socket(sock, ciphers=self._ssl_cipher)
    
    修改为:
    ssl.wrap_socket(sock)
    

⚠️ 注意:这种方法只是临时应急,后续升级连接器会覆盖修改,不推荐长期使用。

3. 明确在连接配置中禁用SSL

确保你的Python连接代码里明确指定ssl_disabled=True,比如:

import mysql.connector

config = {
    'user': 'your_user',
    'password': 'your_password',
    'host': 'your_host',
    'database': 'your_db',
    'ssl_disabled': True
}

cnx = mysql.connector.connect(**config)

虽然服务器已经设置了ssl_disabled,但客户端明确指定这个参数,能让连接器跳过更多不必要的SSL初始化逻辑,减少触发错误的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:59:47