MySQL默认不启用SSL,需手动配置证书、服务端SSL参数及强制SSL用户;通过SHOW VARIABLES检查支持状态,OpenSSL生成证书,配置my.cnf启用SSL,创建REQUIRE SSL用户并验证Ssl_cipher。
MySQL 默认不启用 SSL,要实现数据传输加密,必须手动开启并正确配置服务端和客户端的 SSL 支持。核心在于生成或获取有效的 SSL 证书与密钥,并在 MySQL 配置中指定路径,同时确保用户账户强制使用 SSL 连接。
登录 MySQL 后执行以下命令:
SHOW VARIABLES LIKE 'have_ssl'; 或 SHOW VARIABLES LIKE 'ssl_version';
若返回 DISABLED 或 NO,说明未编译 SSL 支持或未启用;返回 YES 表示基础支持已就绪,可继续配置。
推荐使用 OpenSSL 工具在服务器上生成自签名证书(生产环境建议使用受信任 CA 签发的证书):
最终需确保 ca.pem、server-cert.pem、server-key.pem 存放在 MySQL 可读目录(如 /var/lib/mysql/ssl/),权限设为 mysql:mysql 且私钥不可被组/其他用户读取(chmod 600 *.pem)。
编辑 MySQL 配置文件(通常是 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf),在 [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 服务:
systemctl restart mysql(或 mysqld)
再次执行 SHOW VARIABLES LIKE 'ssl%';,确认 ssl_ca、ssl_cert、ssl_key 显示正确路径,且 ssl_cipher 非空。
登录 MySQL,创建仅允许 SSL 连接的用户:
CREATE USER 'appuser'@'%' IDENTIFIED BY 'strongpass' REQUIRE SSL;
GRANT SELECT, INSERT ON mydb.* TO 'appuser'@'%';
FLUSH PRIVILEGES;
客户端连接时启用 SSL:
t-key.pem
ssl={'ca': '/path/to/ca.pem'} 参数若只需服务端验证(单向 SSL),客户端只提供 --ssl-ca 即可;如需双向认证(客户端也验签),则需配置 REQUIRE X509 并提供客户端证书。