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

Python 3.x(sqlalchemy)如何验证MySQL数据库连接使用TLSv1.2

问题解答

1. 为什么查询tls_version返回三个版本

show variables like '%tls_version%'查询的是MySQL服务端全局支持的TLS版本范围,是服务端配置允许客户端协商使用的所有TLS版本,不是单个连接实际使用的版本,所以会返回你看到的三个版本。

2. 如何通过数据库查询确认当前连接的实际TLS版本

你之前查询的是全局配置变量,要获取当前连接的实际TLS版本,需要查询会话状态,执行以下SQL即可:
show status like 'Ssl_version';
返回结果的Value就是当前连接使用的TLS版本,若返回值为空则说明当前连接未使用SSL加密。

如果要在你的Python SQLAlchemy代码中直接验证,可以参考以下示例:

from sqlalchemy import create_engine

# 替换为你的实际数据库连接串
mysql_engine = create_engine("mysql+pymysql://你的用户名:你的密码@数据库地址:3306/数据库名")

with mysql_engine.connect() as conn:
    # 查询当前连接的TLS版本
    res = conn.execute("show status like 'Ssl_version';")
    tls_version = res.fetchone()
    print(f"当前连接使用的TLS版本为:{tls_version[1]}")

3. Python场景下用Wireshark验证TLS版本的完整步骤

3.1 准备工作

  • 确认MySQL服务端的IP地址和端口,默认端口为3306
  • 编写简单的Python测试脚本,确保可以正常连接数据库:
from sqlalchemy import create_engine

mysql_engine = create_engine("你的数据库连接串")
with mysql_engine.connect() as conn:
    conn.execute("select 1")

3.2 配置Wireshark捕获规则

  1. 打开Wireshark,选择流量对应的网卡:如果是连接远程数据库,选择当前上网用的Wi-Fi/以太网网卡;如果是连接本地数据库,选择Loopback环回网卡。
  2. 在捕获过滤器输入框中填写tcp port 3306(如果你的MySQL端口不是3306,替换为实际端口),过滤所有MySQL相关流量。
  3. 点击开始捕获按钮。

3.3 捕获并分析流量

  1. 运行你的Python测试脚本,脚本执行完成后点击Wireshark的停止捕获按钮。
  2. 在Wireshark的显示过滤器输入框中填写tls.handshake.type == 2,筛选出TLS握手的Server Hello包(服务端返回的握手确认包,包含最终协商的TLS版本)。
  3. 点击对应的Server Hello包,展开Transport Layer Security层级,查看Version字段,若显示TLS 1.2即可确认连接使用的是TLSv1.2版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 05:45:04