mysql如何在复制中启用SSL

来源:这里教程网 时间:2026-02-28 20:11:35 作者:

在MySQL复制中启用SSL是为了保障主从服务器之间数据传输的安全性。要实现这一点,需在主库和从库上配置SSL连接,并确保复制线程使用加密连接。以下是具体步骤:

1. 确认MySQL支持SSL

首先确认你的MySQL服务器编译时启用了SSL支持,并且SSL功能已开启。

SHOW VARIABLES LIKE 'have_ssl';

如果返回值为 YES,说明SSL可用。同时检查:

SHOW VARIABLES LIKE 'ssl_ca';
SHOW VARIABLES LIKE 'ssl_cert';
SHOW VARIABLES LIKE 'ssl_key';

这些变量应指向有效的证书文件路径。

2. 配置主库和从库的SSL参数

编辑主库和从库的my.cnf(或my.ini)配置文件,在[mysqld]段落中添加以下内容:

[mysqld]
ssl-ca=/path/to/ca-cert.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem

确保这些证书是由可信CA签发或自签名但被双方信任。重启MySQL服务使配置生效。

3. 创建用于复制的用户并强制SSL

在主库上创建复制用户时,要求其必须使用SSL连接:

CREATE USER 'repl'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

你也可以使用 REQUIRE X509 或更严格的证书验证(如 REQUIRE SUBJECT),根据安全需求调整。

4. 从库连接主库时启用SSL

在从库执行CHANGE MASTER TO命令时,指定SSL相关参数:

CHANGE MASTER TO
  MASTER_HOST='master_host_ip',
  MASTER_USER='repl',
  MASTER_PASSWORD='password',
  MASTER_SSL=1,
  MASTER_SSL_CA='/path/to/ca-cert.pem',
  MASTER_SSL_CERT='/path/to/client-cert.pem',
  MASTER_SSL_KEY='/path/to/client-key.pem';

其中MASTER_SSL=1表示启用SSL。如果主从共用同一套CA,则只需提供MASTER_SSL_CA即可。

5. 启动复制并验证SSL连接

启动复制线程:

START SLAVE;

然后检查是否通过SSL连接:

SHOW SLAVE STATUS\G

查看字段Master_SSL_Allowed是否为Yes,以及Master_SSL_CA_FileMaster_SSL_Cert等是否正确显示路径。

还可以在主库运行:

SHOW PROCESSLIST;

找到复制用户的连接,查看Command列是否为Binlog Dump,State中是否有SSL相关信息。

基本上就这些。只要证书配置正确,主从之间的数据传输就会通过加密通道进行,有效防止窃听和中间人攻击。

相关推荐

热文推荐