如何配置mysql ssl_mysql加密通信设置

9次阅读

MySQL SSL 配置通过加密通道防止数据窃听,需生成 CA 证书、服务器证书和私钥,配置服务端 SSL 参数并重启,强制用户 REQUIRE SSL,客户端连接时指定 ssl-mode 及 CA 证书路径。

如何配置 mysql ssl_mysql 加密通信设置

MySQL SSL 配置就是让客户端和服务器之间用加密通道通信,防止密码、数据在传输中被窃听。核心是生成或获取合法的 SSL 证书和密钥文件,并在 MySQL 服务端和客户端正确启用。

准备 SSL 证书和密钥文件

MySQL 要求三类文件:CA 证书(ca.pem)、服务器证书(server-cert.pem)和服务器私钥(server-key.pem)。推荐用 OpenSSL 自签(测试 / 内网可用),生产环境建议使用受信任 CA 签发的证书。

快速生成自签名证书(在 MySQL 数据目录外安全位置执行):

  • 生成 CA 密钥和证书:
    openssl genrsa 2048 > ca-key.pem
    openssl req -new -x509 –nodes -days 3650 -key ca-key.pem -out ca.pem
  • 生成服务器私钥和证书请求:
    openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem
  • 用 CA 签发服务器证书:
    openssl x509 -req -in server-req.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

生成后把 ca.pem、server-cert.pem、server-key.pem 放到 MySQL 配置能读取的路径(如 /etc/mysql/ssl/),并确保 MySQL 用户有读权限。

配置 MySQL 服务端启用 SSL

编辑 MySQL 配置文件 (通常是 /etc/my.cnf/etc/mysql/mysqld.cnf),在 [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(或 mysqld

登录 MySQL 执行:
SHOW VARIABLES LIKE ‘%ssl%’;
确认 have_sslYES,且 ssl_cassl_certssl_key 显示对应路径。

强制用户走 SSL 连接

创建或修改用户时指定 REQUIRE SSL,例如:

  • 新建用户:
    CREATE USER ‘appuser’@’%’ IDENTIFIED BY ‘pwd123’ REQUIRE SSL;
  • 修改已有用户:
    ALTER USER ‘appuser’@’%’ REQUIRE SSL;

之后该用户连接必须提供客户端证书(可选)或至少启用加密通道。验证是否生效:
SELECT user, host, ssl_type FROM mysql.user WHERE user = ‘appuser’;
结果中 ssl_type 应为 ANY(表示仅需 SSL 加密,不校验客户端证书)或 X509(要求客户端证书)。

客户端连接启用 SSL

命令行连接示例(Linux/macOS):
mysql -u appuser -p –ssl-mode=REQUIRED -h db.example.com

如果要验证服务器证书(推荐):
mysql -u appuser -p –ssl-mode=VERIFY_IDENTITY –ssl-ca=/path/to/ca.pem -h db.example.com

应用连接时(如 Python PyMySQL)需显式传入 SSL 参数:
ssl={‘ca’: ‘/path/to/ca.pem’},并设置 ssl_mode=’VERIFY_IDENTITY’

注意:MySQL 8.0+ 默认 –ssl-mode=REQUIRED,但旧版本或某些客户端可能默认禁用,务必显式指定。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-28发表,共计1630字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources