MySQL作为常用的关系型数据库,默认情况下客户端和服务器之间的数据传输是明文的,在网络环境复杂时存在数据泄露风险。开启SSL连接后,所有传输的数据都会被加密,有效保障数据安全性。

生成SSL证书和密钥
首先需要为MySQL服务器和客户端生成对应的SSL证书、私钥和CA证书,我们可以使用OpenSSL工具完成生成操作。
生成CA证书
CA证书用于签名服务器和客户端证书,确保证书的合法性,执行以下命令生成CA相关文件:
# 生成CA私钥 openssl genrsa 2048 > ca-key.pem # 生成CA证书,有效期365天 openssl req -new -x509 -nodes -days 365 -key ca-key.pem -out ca-cert.pem
生成服务器证书
服务器证书需要由CA签名,执行以下命令生成服务器相关文件:
# 生成服务器私钥 openssl genrsa 2048 > server-key.pem # 生成服务器证书请求文件 openssl req -new -key server-key.pem -out server-req.pem # 用CA签名服务器证书请求,生成服务器证书 openssl x509 -req -in server-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
生成客户端证书
客户端证书用于客户端连接服务器时的身份验证,生成步骤和服务器证书类似:
# 生成客户端私钥 openssl genrsa 2048 > client-key.pem # 生成客户端证书请求文件 openssl req -new -key client-key.pem -out client-req.pem # 用CA签名客户端证书请求,生成客户端证书 openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
配置MySQL服务器开启SSL
将生成的证书和密钥文件放到MySQL的数据目录下,然后修改MySQL配置文件my.cnf(Windows系统为my.ini),添加SSL相关配置。
修改配置文件
在[mysqld]配置段中添加以下内容,指定证书和密钥的路径:
[mysqld] ssl_ca=/var/lib/mysql/ca-cert.pem ssl_cert=/var/lib/mysql/server-cert.pem ssl_key=/var/lib/mysql/server-key.pem
修改完成后重启MySQL服务,使配置生效。
验证服务器SSL状态
登录MySQL服务器,执行以下SQL语句查看SSL是否开启:
SHOW VARIABLES LIKE '%ssl%';
如果返回结果中have_ssl的值为YES,说明服务器SSL已经成功开启。
配置客户端使用SSL连接
客户端连接MySQL时,需要指定SSL证书、密钥和CA证书的路径,才能建立加密连接。
命令行客户端连接方式
使用mysql命令连接时,添加SSL相关参数:
mysql -h 127.0.0.1 -u root -p --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
强制用户使用SSL连接
可以修改MySQL用户权限,强制指定用户必须使用SSL连接,执行以下SQL语句:
# 创建强制SSL连接的用户 CREATE USER 'ssl_user'@'%' IDENTIFIED BY 'password' REQUIRE SSL; # 给已有用户开启强制SSL连接 ALTER USER 'existing_user'@'%' REQUIRE SSL;
验证SSL连接是否生效
连接成功后,执行以下SQL语句查看当前连接是否使用了SSL加密:
SHOW STATUS LIKE 'Ssl_cipher';
如果返回结果中Ssl_cipher的值不为空,说明当前连接已经使用了SSL加密,数据传输会被加密处理。
配置注意事项
- 证书文件需要设置正确的权限,避免其他用户随意读取私钥内容,建议私钥文件权限设置为600。
- 如果客户端和服务器不在同一台机器,需要将对应的证书文件同步到客户端所在机器,并且路径配置正确。
- 证书过期后需要重新生成新的证书,并更新服务器和客户端的配置,避免连接失败。
- 开启SSL后会增加少量的CPU开销,对性能影响较小,一般业务场景可以忽略。
MySQLSSL数据传输加密mysql_ssl_config修改时间:2026-07-15 02:21:32