要使用加密连接传输复制期间所需的二进制日志,主服务器和从服务器都必须支持加密的网络连接。如果任一服务器不支持加密连接(因为尚未为其编译或配置),则无法通过加密连接进行复制。
设置用于复制的加密连接与为客户端/服务器连接进行设置相似。您必须获得(或创建)可以在主服务器上使用的合适的安全证书,并在每个从服务器上获得相似的证书(来自相同的证书颁发机构)。您还必须获取合适的密钥文件。
有关为加密连接设置服务器和客户端的更多信息,请参见 第6.3.1节“配置MySQL以使用加密连接”。
要在主服务器上启用加密连接,必须创建或获取合适的证书和密钥文件,然后[mysqld]在主服务器my.cnf文件部分 内的主服务器配置中添加以下配置选项,并根据需要更改文件名:
[mysqld]
ssl-ca=cacert.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
文件的路径可以是相对的,也可以是绝对的。我们建议您始终为此使用完整路径。
选项如下:
–ssl-ca:证书颁发机构(CA)证书文件的路径名。(–ssl-capath类似,但指定CA证书文件目录的路径名。)
–ssl-cert:服务器公钥证书文件的路径名。该证书可以发送到客户端,并根据其拥有的CA证书进行身份验证。
–ssl-key:服务器私钥文件的路径名。
在从站上,有两种方法可以指定使用加密连接到主站所需的信息。您可以在从属文件的[client]部分中 命名从属证书和密钥 my.cnf文件,也可以使用以下CHANGE MASTER TO语句明确指定该信息:
要使用选项文件命名从属证书和密钥文件,请将以下行添加到[client]从属my.cnf文件的 部分,并 根据需要更改文件名:
[client]
ssl-ca=cacert.pem
ssl-cert=client-cert.pem
ssl-key=client-key.pem
使用该–skip-slave-start选项重新启动从服务器,以防止从服务器 连接到主服务器。使用 CHANGE MASTER TO指定的主配置,使用MASTER_SSL 选择使用加密连接:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_hostname',
-> MASTER_USER='replicate',
-> MASTER_PASSWORD='password',
-> MASTER_SSL=1;
要使用该CHANGE MASTER TO语句指定证书和密钥名称 ,请附加适当的 选项: MASTER_SSL_xxx
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_hostname',
-> MASTER_USER='replicate',
-> MASTER_PASSWORD='password',
-> MASTER_SSL=1,
-> MASTER_SSL_CA = 'ca_file_name',
-> MASTER_SSL_CAPATH = 'ca_directory_name',
-> MASTER_SSL_CERT = 'cert_file_name',
-> MASTER_SSL_KEY = 'key_file_name';
更新主信息后,启动从属复制过程:
mysql> START SLAVE;
您可以使用该SHOW SLAVE STATUS 语句来确认已成功建立加密连接。
有关该CHANGE MASTER TO语句的更多信息,请参见第13.4.2.1节“将主表更改为语句”。
如果要在复制期间强制使用加密连接,请创建一个具有REPLICATION SLAVE特权的用户, 并REQUIRE SSL为该用户使用该选项。例如:
mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.example.com' REQUIRE SSL;
如果该帐户已经存在,则可以REQUIRE SSL使用以下语句添加到该帐户:
mysql> GRANT USAGE ON *.*
-> TO 'repl'@'%.example.com' REQUIRE SSL;




