最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何通过SSL/TLS加密MySQL客户端与服务端的连接?
时间:2026-08-10 17:33:50 编辑:袖梨 来源:一聚教程网
必须先确认have_ssl= YES,否则服务端未加载TLS栈,后续配置全无效;再验证ssl_ca/cert/key为非空绝对路径且权限600;最后启用require_secure_transport=ON并客户端显式指定--ssl-mode=REQUIRED。
确认 MySQL 是否真正加载了 SSL 支持
没这一步,后面全白搭。have_ssl 必须返回 YES,否则服务端压根没启用 TLS 栈。常见错误是返回 DISABLED 或空值——这不是证书配错了,而是 mysqld 启动时根本没加载 OpenSSL 模块。
- 执行
SHOW VARIABLES LIKE 'have_ssl';,结果不是YES就别往下试 -
SHOW VARIABLES LIKE 'ssl_ca';、ssl_cert、ssl_key三者必须都显示非空的绝对路径(如/var/lib/mysql/ca.pem) - 如果
have_ssl = DISABLED,大概率是用了精简版 MariaDB 或编译时未带-DWITH_SSL=system;重装最新 MySQL 二进制包比调试证书路径更高效 - 顺手查
SELECT @@GLOBAL.tls_version;,确保至少包含TLSv1.2;若为空,说明底层 TLS 实现未就绪
生成并放置证书:路径、权限、格式缺一不可
MySQL 对证书极其挑剔,错一个细节就会静默跳过 SSL 初始化,连接照常建立但全程明文。
- 优先用内置工具:
mysql_ssl_rsa_setup --datadir=/var/lib/mysql --uid=mysql,它自动处理subjectAltName,避免连 IP 时因 CN 不匹配报X509_V_ERR_IP_ADDRESS_MISMATCH - 证书必须放在 MySQL 进程有读权限的目录(如
/var/lib/mysql/),不能放/root/、/home/或/tmp/ -
server-key.pem权限必须是600(-rw-------),且属主为mysql:执行chown mysql:mysql /var/lib/mysql/server-key.pem && chmod 600 /var/lib/mysql/server-key.pem - 路径必须是绝对路径,写成
./ca.pem或~/ca.pem会被 mysqld 静默忽略
配置 require_secure_transport = ON 强制全局加密
只给用户加 REQUIRE SSL 不够——它只校验已建立的连接是否走 TLS;而 require_secure_transport = ON 是协议层开关,会直接拒绝所有未加密的 TCP 连接(包括 [email protected]),这才是真正的强制。
- 运行时启用(推荐):
SET PERSIST require_secure_transport = ON; - 配置文件启用:在
my.cnf的[mysqld]段添加require_secure_transport = ON,然后systemctl restart mysqld - 验证:
SELECT @@GLOBAL.require_secure_transport;返回1才算生效 - 注意:Unix socket 连接(如本地
localhost)默认不受影响,除非显式禁用
客户端必须显式发起 TLS 握手才能成功连接
服务端开了强制加密,客户端不主动握手,连接会被直接终止。错误提示常是 Access denied for user,但这不是密码错,而是协议被拦在门外。
- 命令行:
mysql -u appuser -h 192.168.1.100 -p --ssl-mode=REQUIRED - JDBC URL:
?useSSL=true&requireSSL=true&enabledTLSProtocols=TLSv1.2(旧驱动用usessl=true无效) - PHP mysqli:连接时传入
MYSQLI_CLIENT_SSL标志 - PDO DSN:
sslmode=require或完整指定证书路径 - 避坑:
--ssl-mode=VERIFY_IDENTITY要求证书 CN 匹配连接地址,自签名证书 CN 多为localhost,连 IP 就失败
最容易被忽略的是三者必须同时成立:have_ssl = YES、用户权限含 REQUIRE SSL、客户端真实完成 TLS 握手。漏掉任意一环,连接都会静默降级为明文——你不会收到任何错误,但数据已在裸奔。
相关文章
- 迅捷 FWR310 无线路由器端口映射设置指南 08-11
- 迅捷 FW150R 无线路由器端口映射设置指南 08-11
- 迅捷 FWD105 无线路由器一体机WDS桥接设置 08-11
- 迅捷 FW325R 无线路由器IP与MAC地址绑定设置 08-11
- 方舟生存进化琥珀获取指南 08-11
- 迅捷 FW150R 无线路由器作为交换机设置 08-11