[ACDU 翻译] MySQL 17.3.1 设置复制以使用加密连接

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

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

有关为加密连接设置服务器和客户端的更多信息,请参阅 第 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 REPLICATION SOURCE TO 语句(MySQL 8.0.23 及更高版本)或CHANGE MASTER TO语句(MySQL 8.0.23 之前)。

  • CHANGE REPLICATION SOURCE TO要使用( ) 命名副本的证书和 SSL 私钥文件CHANGE MASTER TO,请添加适当的 ( ) 选项,如下所示: SOURCE_SSL_*xxx*``MASTER_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',

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

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

    -> SOURCE_SSL_VERIFY_SERVER_CERT=1,

    此选项对应于 --ssl-verify-server-cert选项,该选项在 MySQL 5.7 中已弃用并在 MySQL 8.0 中删除。对于复制连接,指定 MASTER_SSL_VERIFY_SERVER_CERT=1对应于设置--ssl-mode=VERIFY_IDENTITY,如加密连接的命令选项中所述。要使此选项生效, SOURCE_SSL=1还必须进行设置。主机名身份验证不适用于自签名证书。

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

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

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

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

    -> SOURCE_SSL_CIPHER = 'cipher_list', -> SOURCE_TLS_VERSION = 'protocol_list', -> SOURCE_TLS_CIPHERSUITES = 'ciphersuite_list',
    • SOURCE_SSL_CIPHER选项指定副本允许用于复制连接的一个或多个密码的冒号分隔列表。
    • SOURCE_TLS_VERSION选项指定副本允许用于复制连接的 TLS 加密协议的逗号分隔列表,其格式类似于 tls_version服务器系统变量的格式。连接过程协商使用源和副本都允许的最高 TLS 版本。为了能够连接,副本必须至少有一个与源相同的 TLS 版本。
    • SOURCE_TLS_CIPHERSUITES选项(从 MySQL 8.0.19 开始可用)指定一个或多个密码套件的冒号分隔列表,如果 TLSv1.3 用于连接,则复制连接允许这些密码套件。如果在使用 TLSv1.3 时将此选项设置为NULL(如果您不设置该选项,则为默认设置),则允许默认启用的密码套件。如果将该选项设置为空字符串,则不允许使用任何密码套件,因此不使用 TLSv1.3。

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

    笔记

    在 MySQL 8.0.16 到 8.0.18 中,MySQL 支持 TLSv1.3,但该SOURCE_TLS_CIPHERSUITES选项不可用。在这些版本中,如果 TLSv1.3 用于源和副本之间的连接,则源必须允许使用至少一个默认启用的 TLSv1.3 密码套件。从 MySQL 8.0.19 开始,您可以使用该选项来指定任何选择的密码套件,如果需要,仅包括非默认密码套件。

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

    mysql> START SLAVE;

    从 MySQL 8.0.22 开始,START REPLICA 是首选,如下所示:

    mysql> START REPLICA;

    您可以使用 SHOW REPLICA STATUS(MySQL 8.0.22 之前的 SHOW SLAVE 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;

免责声明:

1、本站资源由自动抓取工具收集整理于网络。

2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

5、如果您喜欢本资源,请您支持作者,购买正版内容。

6、资源失效,请下方留言,欢迎分享资源链接

文章评论

0条评论