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

MySQL 8 TLS/SSL版本号错误,多客户端连接异常求助

解决MySQL Router+Java EE应用的TLS连接错误及不稳定问题

核心错误分析

错误error:0A00010B:SSL routines::wrong version number是TLS版本协商失败的典型表现,结合连接不稳定、成功时响应慢的现象,大概率是MySQL Router/后端MySQL集群的TLS配置与客户端(Java驱动、DBeaver、MySQL CLI)不兼容,或是Router的连接转发逻辑存在异常。


分步排查与修复

1. 强制锁定TLS版本,排除协商不兼容

针对Java应用(Payara/独立Maven项目)

在JDBC连接URL中明确指定兼容的TLS版本,避免驱动自动协商出错:

jdbc:mysql://[Router地址]:[端口]/[数据库名]?useSSL=true&requireSSL=true&enabledTLSProtocols=TLSv1.3,TLSv1.2

如果使用Payara数据源配置(domain.xml),添加对应属性:

<property name="enabledTLSProtocols" value="TLSv1.3,TLSv1.2"/>
<property name="useSSL" value="true"/>
<property name="requireSSL" value="true"/>

针对MySQL CLI

连接时强制指定TLS版本,测试稳定性:

mysql -h [Router地址] -P [端口] -u [用户名] -p --ssl-mode=REQUIRED --tls-version=TLSv1.3,TLSv1.2

若指定后连接稳定,说明自动协商阶段存在版本不匹配问题。

2. 检查MySQL Router的TLS配置

打开Router配置文件(通常为mysqlrouter.conf),确认SSL相关配置:

[routing:primary]
bind_address = [Router监听地址]
bind_port = [端口]
destinations = [MySQL集群节点地址]
mode = read-write
ssl_mode = REQUIRED
ssl_ca = [CA证书路径]
ssl_cert = [Router证书路径]
ssl_key = [Router私钥路径]
# 确保配置了客户端支持的TLS版本,避免仅启用小众/不兼容版本
tls_versions = TLSv1.2,TLSv1.3

注意:如果Router仅启用TLSv1.3,但Java 11或旧版Connector/J对TLSv1.3的套件支持存在兼容性问题,会导致协商失败,可临时添加TLSv1.2测试。

3. 验证MySQL集群的TLS配置

登录MySQL集群节点,检查当前启用的TLS版本和密码套件:

SHOW VARIABLES LIKE 'tls_version';
SHOW VARIABLES LIKE 'ssl_cipher';

确保集群的tls_version包含Java驱动支持的版本,且密码套件与客户端兼容(Java 11支持的TLSv1.3套件包括TLS_AES_256_GCM_SHA384、TLS_CHACHA20_POLY1305_SHA256等)。

4. 排查MySQL Router的连接转发稳定性

连接不稳定且响应慢,可能是Router负载均衡或连接池配置问题:

  • 查看Router日志(通常在/var/log/mysqlrouter/),排查是否有连接超时、节点切换报错。
  • 调整Router的超时配置:
[routing:primary]
connect_timeout = 5
read_timeout = 30
write_timeout = 30
  • 确认MySQL集群节点状态正常,无离线、高延迟情况。

5. 调整MySQL Connector/J版本

若使用Connector/J 8.0.33存在兼容性问题:

  • 升级至最新稳定版(如8.4.0),新版本修复了多个TLS协商bug。
  • 或回退到8.0.30,该版本对TLSv1.3的兼容性更稳定。

快速验证流程

  1. 用MySQL CLI指定TLSv1.2连接,观察是否稳定:
    mysql -h [Router地址] -P [端口] -u [用户名] -p --ssl-mode=REQUIRED --tls-version=TLSv1.2
    
  2. 若CLI连接稳定,修改Java应用JDBC URL,仅启用TLSv1.2,测试是否解决错误。
  3. 同步检查Router与MySQL集群的TLS版本配置,确保两边版本范围有交集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:35:58