mysql如何配置SSL加密连接_mysql传输安全设置
发布时间 - 2026-01-31 00:00:00 点击率:次MySQL启用SSL需服务端生成证书、配置my.cnf并设require_secure_transport=ON;客户端须用VERIFY_CA模式验证CA证书;连接后需通过STATUS或查询Ssl_cipher确认加密生效。
MySQL 服务端 SSL 证书生成与启用
MySQL 要支持 SSL 加密连接,必须先在服务端生成或配置有效的证书文件,并在 my.cnf 中显式启用。不启用就等于没配,客户端即使强制要求 SSL 也会被拒绝。
- 证书路径必须由 MySQL 进程可读(常见坑:SELinux 或文件权限阻止 mysqld 读取
ca.pem/server-cert.pem/server-key.pem) - 推荐用 OpenSSL 一次性生成三件套:
openssl req -x509 -newkey rsa:4096 -days 3650 -nodes -keyout server-key.pem -out server-cert.pem -subj "/CN=localhost",再用openssl x509 -in server-cert.pem -out ca.pem -signkey server-key.pem补全 CA 文件 - 配置段加在
[mysqld]下:ssl_ca = /var/lib/mysql/ca.pem
,其中
ssl_cert = /var/lib/mysql/server-cert.pem
ssl_key = /var/lib/mysql/server-key.pem
require_secure_transport = ONrequire_secure_transport = ON是强制所有连接走加密通道的关键开关
客户端连接时如何验证服务器证书
只服务端配了 SSL 不够,客户端默认不校验证书,容易被中间人劫持。真正安全的连接必须让客户端主动验证 CA 签发链。
- 命令行连接加
--ssl-mode=VERIFY_CA并指定 CA 文件:mysql -u user -p --ssl-ca=/path/to/ca.pem --ssl-mode=VERIFY_CA - 若用 Python 的
pymysql,需传入ssl={'ca': '/path/to/ca.pem'};用mysql-connector-python则设ssl_disabled=False, ssl_ca='/path/to/ca.pem' -
ssl-mode=REQUIRED仅加密不验证,等同于明文风险;VERIFY_IDENTITY更进一步校验主机名,但要求证书CN或subjectAltName匹配实际连接地址

检查当前连接是否真的走 SSL
很多用户以为连上了就安全了,其实可能 fallback 到非加密连接。必须实时确认会话级加密状态。
- 登录后执行
STATUS;,看输出里SSL:行是否显示Cipher in use is ... - 更可靠的是查会话变量:
SHOW VARIABLES LIKE 'have_ssl';(服务端是否支持)和SELECT * FROM performance_schema.status_by_thread WHERE variable_name = 'Ssl_cipher'; - 如果
Ssl_cipher为空字符串,说明当前连接未启用 SSL,哪怕全局配置都开着——常见于客户端没传证书参数或服务端require_secure_transport未开启
常见报错与绕过陷阱
SSL 配置出问题时错误信息往往模糊,重点盯住几个典型提示。
-
SSL connection error: protocol version mismatch:客户端和服务端 TLS 版本不兼容,MySQL 8.0.16+ 默认禁用 TLSv1.0/TLSv1.1,需确保客户端支持 TLSv1.2+ -
ERROR 9002 (HY000): SSL connection is required:服务端开了require_secure_transport,但客户端没带 SSL 参数,不能靠加--skip-ssl绕过,那是自废武功 - 使用 Docker 或云数据库时,
localhost连接常走 socket 而非 TCP,SSL 不生效;应改用127.0.0.1强制走网络栈
证书不是配完就一劳永逸的,CA 过期、密钥泄露、TLS 协议升级都会让加密形同虚设。每次变更后务必用真实客户端复测,别只信配置文件里那几行。
# mysql
# linux
# python
# node
# docker
# ssl
# 栈
# 配置文件
# red
# select
# Error
# 字符串
# 数据库
# 客户端
# 服务端
# 复测
# 的是
# 几个
# 也会
# 那是
# 上了
# 形同虚设
# 开了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
高性价比服务器租赁——企业级配置与24小时运维服务
Laravel中的withCount方法怎么高效统计关联模型数量
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
bootstrap日历插件datetimepicker使用方法
C#如何调用原生C++ COM对象详解
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
如何在阿里云完成域名注册与建站?
Bootstrap整体框架之JavaScript插件架构
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
iOS正则表达式验证手机号、邮箱、身份证号等
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
Laravel如何实现文件上传和存储?(本地与S3配置)
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
Laravel如何创建自定义Facades?(详细步骤)
中山网站推广排名,中山信息港登录入口?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
制作电商网页,电商供应链怎么做?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
jQuery 常见小例汇总
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
香港服务器网站卡顿?如何解决网络延迟与负载问题?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
网站建设要注意的标准 促进网站用户好感度!
zabbix利用python脚本发送报警邮件的方法
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
如何自定义建站之星模板颜色并下载新样式?
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
如何在自有机房高效搭建专业网站?
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
西安专业网站制作公司有哪些,陕西省建行官方网站?
使用C语言编写圣诞表白程序
Java类加载基本过程详细介绍
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel distinct去重查询_Laravel Eloquent去重方法
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
深入理解Android中的xmlns:tools属性
微信小程序 wx.uploadFile无法上传解决办法
北京网站制作公司哪家好一点,北京租房网站有哪些?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何快速打造个性化非模板自助建站?
php json中文编码为null的解决办法
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
图册素材网站设计制作软件,图册的导出方式有几种?
如何快速选择适合个人网站的云服务器配置?
活动邀请函制作网站有哪些,活动邀请函文案?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
python中快速进行多个字符替换的方法小结

