MySQL 8.0 参考手册  / 第十七章复制  / 17.4 复制解决方案  /  17.3.8 设置复制以使用加密连接

17.3.8 设置复制以使用加密连接

要使用加密连接传输复制期间所需的二进制日志,源服务器和副本服务器都必须支持加密网络连接。如果任一服务器不支持加密连接(因为尚未为它们编译或配置),则无法通过加密连接进行复制。

为复制设置加密连接类似于为客户端/服务器连接设置加密连接。您必须获得(或创建)一个可以在源上使用的合适的安全证书,并在每个副本上获得一个类似的证书(来自相同的证书颁发机构)。您还必须获得合适的密钥文件。

有关为加密连接设置服务器和客户端的更多信息,请参阅 第 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: 服务器私钥文件的路径名。

要在副本上启用加密连接,请使用该 CHANGE MASTER TO语句。

  • 要使用 命名副本的证书和 SSL 私钥文件CHANGE MASTER TO,请添加适当的 选项,如下所示: MASTER_SSL_xxx

        -> MASTER_SSL_CA = 'ca_file_name',
        -> MASTER_SSL_CAPATH = 'ca_directory_name',
        -> MASTER_SSL_CERT = 'cert_file_name',
        -> MASTER_SSL_KEY = 'key_file_name',

    这些选项对应于 具有相同名称的选项,如 加密连接的命令选项中所述。要使这些选项生效,还必须进行设置。对于复制连接,为或 指定一个值对应于设置 。仅当使用指定信息找到有效的匹配证书颁发机构 (CA) 证书时,连接尝试才会成功。 --ssl-xxxMASTER_SSL=1MASTER_SSL_CAMASTER_SSL_CAPATH--ssl-mode=VERIFY_CA

  • 要激活主机名身份验证,请添加 MASTER_SSL_VERIFY_SERVER_CERT选项:

        -> MASTER_SSL_VERIFY_SERVER_CERT=1,
  • 更新源信息后,在副本上启动复制过程,如下所示:

    mysql> START SLAVE;

    您可以使用该SHOW SLAVE STATUS语句来确认已成功建立加密连接。

  • 如果要在复制期间强制使用加密连接,请创建具有 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;