上一篇
2025年8月最新动态:随着MySQL 8.4版本的广泛部署,越来越多的用户报告在远程连接时遇到SSL/TLS握手失败问题,特别是云环境中的跨区域数据库连接,MySQL官方已将此问题标记为"已知问题",建议用户检查证书有效期和TLS协议版本配置。
当你尝试远程连接MySQL服务器时,突然遇到这样的错误提示:
ERROR 2026 (HY000): SSL connection error: SSL握手失败
MySQL Error number: MY-011304
Symbol: ER_XPLUGIN_SSL_HANDSHAKE_WITH_SERVER_FAILED
SQLSTATE: HY000
这种情况通常发生在:
这个错误的核心是客户端与MySQL服务器之间无法建立安全的SSL/TLS连接,具体可能的原因包括:
证书问题(最常见):
协议/算法不匹配:
配置问题:
时间不同步:
客户端和服务器系统时间差异过大(超过证书有效期允许范围)
在深入修复前,先用这些命令快速诊断:
# 检查服务器SSL状态 mysql -u root -p -e "SHOW STATUS LIKE 'Ssl_version';" # 测试不带SSL的连接(确认是否是SSL专属问题) mysql --ssl-mode=DISABLED -h [主机] -u [用户] -p
检查并更新证书:
# 查看当前证书有效期 openssl x509 -in /var/lib/mysql/server-cert.pem -noout -dates # 如果证书过期,生成新的(需要MySQL重启) sudo mysql_ssl_rsa_setup --uid=mysql
调整SSL配置(my.cnf/my.ini):
[mysqld] ssl_cert = /path/to/server-cert.pem ssl_key = /path/to/server-key.pem ssl_ca = /path/to/ca.pem tls_version = TLSv1.2,TLSv1.3
重启MySQL服务:
sudo systemctl restart mysql
根据你的连接方式,选择相应解决方案:
命令行客户端:
# 明确指定SSL模式 mysql --ssl-mode=REQUIRED --ssl-ca=/path/to/ca.pem -h [主机] -u [用户] -p # 或者降低安全要求(仅测试用) mysql --ssl-mode=VERIFY_CA -h [主机] -u [用户] -p
JDBC连接串:
jdbc:mysql://host:3306/db?useSSL=true&requireSSL=true&verifyServerCertificate=true&enabledTLSProtocols=TLSv1.2
Python (MySQL Connector):
config = { 'ssl_ca': '/path/to/ca.pem', 'ssl_verify_cert': True, 'ssl_verify_identity': True, }
如果问题依旧,尝试:
检查网络中间件:
协议强制设置: 在服务器端my.cnf中明确指定:
[mysqld] tls_version = TLSv1.2
查看详细错误日志:
sudo tail -n 100 /var/log/mysql/error.log
查找"TLS"、"SSL"相关错误
证书管理:
配置标准化:
[mysqld] ssl_cipher = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
定期连接测试: 设置定时任务测试SSL连接:
mysql --ssl-mode=VERIFY_IDENTITY -h localhost -e "STATUS"
2025年新出现的两个相关情况:
遇到MY-011304错误时,按照本文步骤从简到繁排查,大多数情况下都能通过更新证书或调整TLS配置解决,如果问题复杂,建议收集完整的错误日志联系MySQL支持团队。
本文由 塞阳 于2025-08-08发表在【云服务器提供商】,文中图片由(塞阳)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/568985.html
发表评论