在搭建MySQL环境时配置SSL安全连接,可以有效防止数据在传输过程中被窃听或篡改。只要MySQL服务器支持SSL(大多数现代版本默认支持),就可以通过以下步骤完成配置。
检查MySQL SSL支持情况
登录MySQL后执行以下命令查看SSL是否已启用:
SHOW VARIABLES LIKE '%ssl%';重点关注以下几个变量:
- have_ssl:值为YES表示支持SSL
- ssl_ca、ssl_cert、ssl_key:显示证书和密钥文件路径
如果 have_ssl 为 DISABLED 或 NO,需要手动配置证书和启用SSL。
生成SSL证书和密钥
MySQL提供了自带的脚本 mysql_ssl_rsa_setup 可以快速生成所需文件:
mysql_ssl_rsa_setup --datadir=/var/lib/mysql --uid=mysql该命令会在指定目录生成如 ca.pem、server-cert.pem、server-key.pem、client-cert.pem、client-key.pem 等文件。你也可以使用OpenSSL手动创建CA和服务器/客户端证书,适合更严格的环境要求。
配置MySQL启用SSL
编辑MySQL配置文件 my.cnf(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf),在 [mysqld] 段添加:
[mysqld]ssl-ca = /var/lib/mysql/ca.pem
ssl-cert = /var/lib/mysql/server-cert.pem
ssl-key = /var/lib/mysql/server-key.pem
保存后重启MySQL服务:
systemctl restart mysqld再次执行 SHOW VARIABLES LIKE '%ssl%',确认 have_ssl 为 YES,且相关证书路径正确。
强制用户使用SSL连接
可以通过创建或修改用户来要求其必须使用SSL:
CREATE USER 'secure_user'@'%' IDENTIFIED BY 'password'REQUIRE SSL;
或对已有用户修改:
ALTER USER 'existing_user'@'%' REQUIRE SSL;此时该用户连接时必须使用 --ssl-mode=REQUIRED 参数,否则会被拒绝。
客户端连接测试
使用MySQL客户端测试SSL连接:
mysql -u secure_user -h your_host -p --ssl-mode=REQUIRED连接成功后,执行以下语句确认当前连接是否使用SSL:
STATUS;查看输出中的"SSL"项,若显示"Cipher in use is TLS_AES_256_GCM_SHA384"等信息,说明SSL连接已生效。
可选:验证证书(双向认证)
如需更高安全性,可配置客户端证书验证。在 my.cnf 中为用户添加 REQUIRE X509 或指定证书:
ALTER USER 'secure_user'@'%' REQUIRE SUBJECT '/CN=client';客户端连接时需提供自己的证书和私钥:
mysql -u secure_user -h host -p \--ssl-ca=ca.pem \
--ssl-cert=client-cert.pem \
--ssl-key=client-key.pem
基本上就这些。只要证书生成正确、配置文件路径无误、权限设置得当,MySQL的SSL连接就能稳定运行。建议定期更新证书,并关闭非必要用户的SSL豁免,提升整体安全性。
以上就是环境搭建时mysql如何配置SSL安全连接的详细内容,更多请关注我们其它相关文章!