在MySQL中启用SSL加密连接可以确保客户端与数据库服务器之间的数据传输安全。下面介绍如何检查SSL支持状态、配置MySQL启用SSL,并强制使用SSL连接。
检查MySQL SSL支持情况
登录MySQL后,执行以下命令查看SSL相关变量:
SHOW VARIABLES LIKE '%ssl%';
重点关注以下几个变量:
have_ssl:值为YES表示支持SSL,DISABLED表示未启用 ssl_ca、ssl_cert、ssl_key:证书和密钥文件路径如果
have_ssl为DISABLED,说明SSL未启用,需要进一步配置。
生成或准备SSL证书和密钥
MySQL支持自带的脚本生成测试证书,也可使用OpenSSL手动创建。
使用MySQL自带工具(适用于开发环境):
mysql_ssl_rsa_setup --datadir=/path/to/mysql/ssl --uid=mysql
该命令会自动生成ca.pem、server-cert.pem、server-key.pem等文件。
生产环境建议使用CA签发的正式证书,或通过OpenSSL生成:
生成CA私钥和自签名证书 生成服务器私钥并签署证书 确保私钥权限为600,属主为mysql用户配置MySQL启用SSL
编辑MySQL配置文件(通常为
my.cnf或
mysqld.cnf),在
[mysqld]段添加:
[mysqld] ssl-ca = /var/lib/mysql/ssl/ca.pem ssl-cert = /var/lib/mysql/ssl/server-cert.pem ssl-key = /var/lib/mysql/ssl/server-key.pem
保存后重启MySQL服务:
sudo systemctl restart mysql
再次执行
SHOW VARIABLES LIKE '%ssl%',确认
have_ssl变为YES。
强制用户使用SSL连接
可以通过以下方式要求用户必须使用SSL:
创建用户时指定REQUIRE SSL:CREATE USER 'secure_user'@'%' IDENTIFIED BY 'password' REQUIRE SSL;修改现有用户:
ALTER USER 'existing_user'@'%' REQUIRE SSL;
这样该用户只能通过SSL加密连接访问数据库。
验证SSL连接
使用客户端连接后,执行:
STATUS;
查看输出中的“SSL”行,如果显示Cipher信息,说明当前连接已加密。
也可以查询:
SHOW STATUS LIKE 'Ssl_cipher';
若返回非空值,表示当前会话使用了SSL加密。
基本上就这些。配置完成后,所有支持SSL的客户端连接将自动尝试加密。确保防火墙允许标准端口通信,同时定期更新证书以保障安全性。不复杂但容易忽略细节。
