上一篇
凌晨2:15,你正喝着第三杯咖啡☕,突然监控系统狂闪——线上MySQL主从同步崩了!日志里赫然躺着:
ERROR 2025 (HY000): Connection using old (pre-4.1) authentication protocol refused (client option 'secure_auth' enabled)
Error number: MY-010291; Symbol: ER_X509_SUBJECT_MISMATCH
别慌!🧯 这篇实战指南将带你20分钟搞定这个SSL证书身份验证的"刺头"错误。
这个报错本质是SSL证书主题不匹配,常见于:
Common Name
或Subject Alternative Name
与实际主机名不符 就像门锁换了但钥匙没更新🔑,MySQL严格模式会直接拒绝这种"身份可疑"的连接。
登录MySQL服务器执行:
SHOW VARIABLES LIKE '%ssl%'; -- 重点查看: -- have_ssl → YES表示已启用 -- ssl_ca, ssl_cert, ssl_key 指向的证书路径
用openssl检查证书主题:
openssl x509 -in /var/lib/mysql/server-cert.pem -text -noout # 查看Issuer和Subject字段
证书中的CN
或SAN
必须包含:
mysql-prod-01.company.com
) 🚨 典型不匹配案例:
168.1.10
,但客户端用0.0.10
连接 db01.example.com
,但配置了skip-name-resolve
导致IP直连 如果业务急需恢复,可临时关闭严格验证:
SET GLOBAL ssl_verify_server_cert=OFF; -- 或在my.cnf添加: [mysqld] ssl_verify_server_cert=0
⚠️ 这相当于卸掉门锁,仅限内网测试环境使用!
重新生成证书,确保包含所有连接方式:
# 示例生成含IP和域名的证书 openssl req -newkey rsa:2048 -nodes -keyout server-key.pem \ -subj "/CN=db-primary" -addext "subjectAltName=IP:192.168.1.10,DNS:db01.example.com" \ -out server-req.pem
-- 客户端连接时显式启用SSL验证 mysql --ssl-mode=VERIFY_IDENTITY --ssl-ca=/path/to/ca.pem -h db01.example.com
看到SSL connection using TLS_AES_256_GCM_SHA384
即为成功!
ssl_verify_server_cert
,需兼容性检查 verifyServerCertificate=true
参数 最后检查:确认所有中间件(如MaxScale、ProxySQL)也更新了证书配置,否则可能触发级联故障!
现在你可以安心喝掉那杯凉了的咖啡了☕❄️,SSL错误就像防火警报——宁可误报也不能禁用!
本文由 兰鸿轩 于2025-08-06发表在【云服务器提供商】,文中图片由(兰鸿轩)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/549026.html
发表评论