内容提要
MySQL默认连接不加密,存在安全风险。启用SSL加密连接的步骤:准备SSL证书(CA签发或OpenSSL自建),确保服务器和客户端安装SSL模块;将证书和私钥放入指定目录,编辑配置文件设置ssl-ca、ssl-cert、ssl-key路径;重启MySQL服务后,用命令行测试连接,并设置require_secure_transport和ssl为ON,最后用SHOW STATUS验证。
延伸解读
证书来源与选择
文章提到SSL证书可由可信CA签发或使用OpenSSL自建。CA签发的证书通常被客户端默认信任,适合生产环境;自建证书需要客户端显式指定CA证书,否则可能连接失败。选择时需权衡信任成本与管理复杂度。
配置参数解析
在MySQL配置文件中,ssl-ca指定CA证书路径,ssl-cert指定服务器证书路径,ssl-key指定服务器私钥路径。这些参数必须正确指向文件,否则SSL可能无法启用。配置后需重启MySQL服务使设置生效。
强制加密与验证
设置require_secure_transport=ON可强制所有连接使用SSL,ssl=ON则启用SSL支持。通过SHOW STATUS LIKE 'Ssl_cipher'可验证当前连接是否加密。若返回非空值,表示SSL已启用。生产环境建议开启强制加密。
测试连接注意事项
使用mysql命令行工具测试时,需提供--ssl-ca、--ssl-cert和--ssl-key选项。如果连接失败,应检查证书路径、文件权限及MySQL错误日志。确保客户端与服务器SSL模块已安装,避免因模块缺失导致连接问题。
Q&A
MySQL 默认连接加密吗?不加密有什么风险?
MySQL 默认连接不加密,传输数据时可能存在安全风险,数据可能被第三方窃听或篡改。
如何为 MySQL 准备 SSL 证书?
可以从 CA 购买 SSL 证书,也可以使用 OpenSSL 等工具自行生成。
MySQL 启用 SSL 需要在配置文件中设置哪些参数?
需要在 [mysqld] 部分设置 ssl-ca、ssl-cert 和 ssl-key 参数,分别指定 CA 证书、服务器证书和服务器私钥的路径。
修改 MySQL 配置文件后如何使其生效?
保存配置文件后,需要重启 MySQL 服务以应用新的配置。在 Linux 系统中可以使用 sudo systemctl restart mysql 命令。
如何测试 MySQL 的 SSL 连接是否成功?
可以使用 mysql 命令行工具,加上 --ssl-ca、--ssl-cert 和 --ssl-key 选项进行连接测试。
如何验证 MySQL 的 SSL 连接已经启用?
在 MySQL 命令行中执行 SHOW STATUS LIKE 'Ssl_cipher'; 如果看到类似 DHE-RSA-AES256-GCM-SHA384 的输出,则表示 SSL 连接已启用。
启用 MySQL SSL 加密连接需要哪些前提条件?
需要确保 MySQL 服务器和客户端都已经安装了 SSL 模块。如果使用二进制包可能已安装,如果使用源码包则需手动编译并安装。