mysql如何启用SSL连接_mysql SSL连接配置方法

1次阅读

答案:通过检查have_ssl状态、配置ssl证书文件、修改my.cnf启用ssl并重启服务,可实现mysql的ssl连接安全加固。

mysql如何启用SSL连接_mysql SSL连接配置方法

MySQL 启用 SSL 连接可以提升数据库通信的安全性,防止数据在传输过程中被窃听或篡改。只要服务器和客户端支持 OpenSSL,就可以配置基于 SSL/TLS 的安全连接。下面介绍如何检查、启用和配置 MySQL 的 SSL 连接。

检查 MySQL 是否支持 SSL

登录 MySQL 服务器后,执行以下命令查看 SSL 支持状态:

mysql> SHOW VARIABLES LIKE '%ssl%';

重点关注以下变量:

  • have_ssl:值为 YES 表示支持 SSL,DISABLED 表示未启用
  • ssl_cassl_certssl_key:SSL 相关文件路径

如果 have_ssl 为 DISABLED 或 NO,说明需要配置证书并启用 SSL。

生成 SSL 证书和密钥(可选)

MySQL 安装时通常会自带测试证书,位于 data 目录下(如:ca.pemserver-cert.pemserver-key.pem)。生产环境建议使用自己签发的证书。

使用 OpenSSL 生成 CA 和服务器证书示例:

# 生成 CA 私钥和自签名证书 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem <h1>生成服务器私钥和证书请求</h1><p>openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem openssl rsa -in server-key.pem -out server-key.pem openssl x509 -req -in server-req.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem</p><h1>验证证书</h1><p>openssl verify -CAfile ca.pem server-cert.pem</p>

将生成的 ca.pemserver-cert.pemserver-key.pem 放入 MySQL 的证书目录(如 /etc/mysql/ssl/)。

配置 MySQL 启用 SSL

编辑 MySQL 配置文件(通常是 my.cnfmysqld.cnf),在 [mysqld] 段添加:

[mysqld] ssl-ca = /etc/mysql/ssl/ca.pem ssl-cert = /etc/mysql/ssl/server-cert.pem ssl-key = /etc/mysql/ssl/server-key.pem

保存后重启 MySQL 服务:

sudo systemctl restart mysql

再次执行 SHOW VARIABLES LIKE ‘%ssl%’,确认 have_ssl 变为 YES。

强制用户使用 SSL 连接

可以通过创建或修改用户,要求其必须使用 SSL:

-- 创建新用户并要求 SSL CREATE USER 'secure_user'@'%' IDENTIFIED BY 'password'   REQUIRE SSL; <p>-- 修改现有用户 ALTER USER 'existing_user'@'%' REQUIRE SSL;</p>

这样该用户只能通过 SSL 加密连接访问数据库。

客户端连接测试 SSL

使用 mysql 命令行连接时指定 SSL 参数:

mysql -u secure_user -h your_mysql_host -p    --ssl-ca=/path/to/ca.pem    --ssl-cert=/path/to/client-cert.pem    --ssl-key=/path/to/client-key.pem

连接成功后,执行以下语句确认当前连接是否使用 SSL:

mysql> s

查看输出中的 “SSL:” 行,显示 Cipher 表示已启用加密。

或者运行:

mysql> SHOW STATUS LIKE 'Ssl_cipher';

如果返回非空值,说明当前连接已使用 SSL。

基本上就这些。只要证书正确、配置无误,MySQL SSL 连接就能顺利启用,有效保护数据库链路安全。

text=ZqhQzanResources