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

Flask连接本地MySQL遇2055错误:SSL版本号异常求助

解决Flask对接本地MySQL时的2055连接断开(SSL版本错误)问题

核心问题定位

报错中的[SSL: WRONG_VERSION_NUMBER]是关键诱因——你的Python MySQL客户端尝试通过SSL连接本地MySQL,但两者的SSL配置不匹配,或是本地MySQL未启用SSL,客户端却强制发起SSL连接请求。

针对性解决方案

1. 直接禁用SSL连接

在数据库连接配置中明确关闭SSL,根据你使用的MySQL客户端库调整参数:

  • 若使用pymysql:
import pymysql
conn = pymysql.connect(
    host='localhost',
    user='你的用户名',
    password='你的密码',
    db='目标数据库',
    port=3306,
    ssl_mode='DISABLED'  # 核心参数:禁用SSL
)
  • 若使用mysql-connector-python:
import mysql.connector
conn = mysql.connector.connect(
    host='localhost',
    user='你的用户名',
    password='你的密码',
    database='目标数据库',
    ssl_disabled=True  # 核心参数:禁用SSL
)

2. 检查本地MySQL的SSL状态

登录本地MySQL终端,执行命令确认SSL配置:

SHOW VARIABLES LIKE '%ssl%';
  • 若have_ssl值为NO:说明本地MySQL未启用SSL,直接用上面的禁用SSL方案即可解决。
  • 若have_ssl值为YES:查看MySQL支持的SSL协议版本,再让客户端匹配:
SHOW VARIABLES LIKE 'tls_version';

然后在Python连接时指定对应协议(以pymysql为例):

conn = pymysql.connect(
    # 其他连接参数
    ssl={'tls_version': 'TLSv1.2'}  # 替换为MySQL实际支持的版本
)

3. 优化连接管理(减少频繁创建/销毁连接)

虽然你在__exit__中关闭了连接,但频繁创建连接也可能触发异常,建议改用连接池:

  • 使用Flask常用的SQLAlchemy连接池:
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 连接字符串中加入SSL禁用参数,同时配置连接池
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://用户名:密码@localhost/数据库名?ssl_mode=DISABLED'
app.config['SQLALCHEMY_POOL_SIZE'] = 5  # 连接池常驻连接数
app.config['SQLALCHEMY_POOL_RECYCLE'] = 3600  # 自动回收闲置连接的时间(秒)
db = SQLAlchemy(app)

连接池会复用现有连接,避免频繁断开重连的损耗。

4. 调整MySQL的超时参数

本地MySQL的wait_timeout和interactive_timeout设置过短,会自动断开闲置连接。登录MySQL修改:

SET GLOBAL wait_timeout = 28800;
SET GLOBAL interactive_timeout = 28800;

如需永久生效,在my.cnf(Windows为my.ini)中添加:

[mysqld]
wait_timeout = 28800
interactive_timeout = 28800

验证步骤

  1. 优先尝试禁用SSL连接,确认是否还出现2055错误;
  2. 若问题解决,再根据业务需求调整连接池或MySQL超时参数;
  3. 若禁用SSL无效,再排查SSL版本匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:11:28