文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  设置复制以使用加密连接

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

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

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

有关为加密连接设置服务器和客户端的更多信息,请参阅 第 8.3.1 节,“配置 MySQL 以使用加密连接”.

要启用源服务器上的加密连接,您必须创建或获取合适的证书和密钥文件,然后将以下配置参数添加到源 my.cnf 文件的 [mysqld] 部分,并根据需要更改文件名

[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 REPLICATION SOURCE TO 语句。

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

        -> SOURCE_SSL_CA = 'ca_file_name',
        -> SOURCE_SSL_CAPATH = 'ca_directory_name',
        -> SOURCE_SSL_CERT = 'cert_file_name',
        -> SOURCE_SSL_KEY = 'key_file_name',

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

  • 要激活主机名身份验证,请添加 SOURCE_SSL_VERIFY_SERVER_CERT 选项,如下所示

        -> SOURCE_SSL_VERIFY_SERVER_CERT=1,

    对于复制连接,指定 SOURCE_SSL_VERIFY_SERVER_CERT=1 等同于设置 --ssl-mode=VERIFY_IDENTITY,如 加密连接的命令选项 中所述。为了使此选项生效,还必须设置 SOURCE_SSL=1。主机名身份验证不适用于自签名证书。

  • 要激活证书吊销列表 (CRL) 检查,请添加 SOURCE_SSL_CRLSOURCE_SSL_CRLPATH 选项,如下所示

        -> SOURCE_SSL_CRL = 'crl_file_name',
        -> SOURCE_SSL_CRLPATH = 'crl_directory_name',

    这些选项对应于具有相同名称的 --ssl-xxx 选项,如 加密连接的命令选项 中所述。如果未指定它们,则不会进行 CRL 检查。

  • 要指定副本在复制连接中允许的密码、密码套件和加密协议列表,请使用 SOURCE_SSL_CIPHERSOURCE_TLS_VERSIONSOURCE_TLS_CIPHERSUITES 选项,如下所示

        -> SOURCE_SSL_CIPHER = 'cipher_list',
        -> SOURCE_TLS_VERSION = 'protocol_list',
        -> SOURCE_TLS_CIPHERSUITES = 'ciphersuite_list',
    • The SOURCE_SSL_CIPHER option specifies a colon-separated list of one or more ciphers permitted by the replica for the replication connection.

    • The SOURCE_TLS_VERSION option specifies a comma-separated list of the TLS encryption protocols permitted by the replica for the replication connection, in a format like that for the tls_version server system variable. The connection procedure negotiates the use of the highest TLS version that both the source and the replica permit. To be able to connect, the replica must have at least one TLS version in common with the source.

    • The SOURCE_TLS_CIPHERSUITES option specifies a colon-separated list of one or more ciphersuites that are permitted by the replica for the replication connection if TLSv1.3 is used for the connection. If this option is set to NULL when TLSv1.3 is used (which is the default if you do not set the option), the ciphersuites that are enabled by default are allowed. If you set the option to an empty string, no cipher suites are allowed, and TLSv1.3 is therefore not used.

    您可以指定这些列表中的协议、密码和密码套件取决于用于编译 MySQL 的 SSL 库。有关格式、允许的值以及未指定选项时的默认值的信息,请参见 第 8.3.2 节,“加密连接 TLS 协议和密码”

    注意

    您可以使用 SOURCE_TLS_CIPHERSUITES 选项来指定任何密码套件选择,包括仅非默认密码套件(如果您需要)。

  • 在更新源信息后,请在副本上启动复制过程,如下所示

    mysql> START REPLICA;

    您可以使用 SHOW REPLICA STATUS 语句确认是否已成功建立加密连接。

  • 在副本上要求加密连接并不能保证源要求来自副本的加密连接。如果您希望确保源只接受使用加密连接连接的副本,请使用 REQUIRE SSL 选项在源上创建一个复制用户帐户,然后授予该用户 REPLICATION SLAVE 权限。例如

    mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password'
        -> REQUIRE SSL;
    mysql> GRANT REPLICATION SLAVE ON *.*
        -> TO 'repl'@'%.example.com';

    如果您在源上已经拥有现有的复制用户帐户,您可以使用以下语句向其中添加 REQUIRE SSL

    mysql> ALTER USER 'repl'@'%.example.com' REQUIRE SSL;