10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.9 mb
PDF (A4)- 42.0 mb
手册页(TGZ)- 266.1 kb
手册页(邮政编码)- 376.0 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

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

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:服务器私钥文件所在路径。

要在副本上启用加密连接,请使用将复制源更改为语句(来自MySQL 8.0.23)或改变主语句(MySQL 8.0.23之前)。中的加密连接所需的副本证书和SSL私钥文件(客户端)复制品的一部分my.cnf文件,或者可以使用将复制源更改为|改变主声明。

  • 要使用选项文件命名副本的证书和密钥文件,请将以下行添加到(客户端)复制品的一部分my.cnf文件,根据需要更改文件名:

    [客户]ssl-ca = cacert。pem ssl-cert = client-cert。pem ssl密钥= client-key.pem
  • 重新启动副本服务器,使用——skip-slave-start选项,或者在MySQL 8.0.24中skip_slave_start系统变量,以防止副本连接到源。使用将复制源更改为|改变主来指定源配置,并添加MASTER_SSL使用加密连接的选项:

    mysql>修改MASTER为:> MASTER_HOST='source_hostname', > MASTER_USER='repl', > MASTER_PASSWORD='密码”,——> MASTER_SSL = 1;更改复制源为-> SOURCE_HOST='source_hostname', -> SOURCE_USER='repl', -> SOURCE_PASSWORD='密码”,——> SOURCE_SSL = 1;

    设置SOURCE_SSL = 1|MASTER_SSL = 1,则不再设置SOURCE_SSL_xxx|MASTER_SSL_xxx选项对应于设置——ssl-mode =要求对于客户端,如加密连接的命令选项.与SOURCE_SSL = 1|MASTER_SSL = 1,只有在可以建立加密连接的情况下,连接尝试才会成功。复制连接不会回退到未加密连接,因此没有对应于——ssl-mode =首选设置复制。如果SOURCE_SSL = 0|MASTER_SSL = 0,这对应于——ssl-mode =禁用

  • 方法命名副本的证书和SSL私钥文件将复制源更改为|改变主语句,如果您没有在副本中这样做my.cnf文件,添加适当的SOURCE_SSL_xxx|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',

    这些选项对应于——sslxxx中描述的具有相同名称的选项加密连接的命令选项.为了使这些选项生效,MASTER_SSL = 1也必须设置。对于复制连接,请为其中之一指定值MASTER_SSL_CAMASTER_SSL_CAPATH,或者在副本中指定这些选项my.cnf文件,对应于设置——ssl-mode = VERIFY_CA.只有在使用指定的信息找到有效的匹配证书颁发机构(CA)证书时,连接尝试才会成功。

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

    - > MASTER_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,如加密连接的命令选项.为了使该选项生效,MASTER_SSL = 1也必须设置。主机名身份验证不能用于自签名证书。

  • 要激活证书吊销列表(CRL)检查,需要添加MASTER_SSL_CRLMASTER_SSL_CRLPATH选择:

    -> MASTER_SSL_CRLPATH = 'crl_directory_name';

    这些选项对应于——sslxxx中描述的具有相同名称的选项加密连接的命令选项.如果不指定它们,则不进行CRL检查。

  • 要指定副本允许用于复制连接的密码、密码套件和加密协议列表,请使用MASTER_SSL_CIPHERMASTER_TLS_VERSION,MASTER_TLS_CIPHERSUITES选项:

    -> MASTER_SSL_CIPHER = 'cipher_list', -> MASTER_TLS_VERSION = 'protocol_list', -> MASTER_TLS_CIPHERSUITES = 'ciphersuite_list'
    • MASTER_SSL_CIPHER选项指定复制连接允许的一个或多个密码的冒号分隔列表。

    • MASTER_TLS_VERSION选项指定副本允许的用于复制连接的TLS加密协议的逗号分隔列表,格式类似于用于tls_version服务器系统变量。连接过程协商使用源和副本都允许的最高TLS版本。为了能够连接,副本必须至少有一个与源相同的TLS版本。

    • MASTER_TLS_CIPHERSUITESoption(可从MySQL 8.0.19中获得)指定一个冒号分隔的一个或多个密码套件列表,如果复制连接使用TLSv1.3,这些密码套件是由副本允许的。如果该选项设置为当使用TLSv1.3时(如果不设置该选项,则为默认值),默认启用的密码套件是允许的。如果将该选项设置为空字符串,则不允许使用密码套件,因此不使用TLSv1.3。

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

    请注意

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

  • 更新源信息后,在副本上启动复制进程:

    mysql >开始的奴隶;或者从MySQL 8.0.22: MySQL > START REPLICA;

    你可以使用显示复制状态(或在MySQL 8.0.22之前,显示奴隶状态)语句,以确认加密连接已成功建立。

  • 在副本上要求加密连接不能确保源需要来自副本的加密连接。如果要确保源只接受使用加密连接连接的副本,请在源上使用需要SSL选项,然后授予该用户复制的奴隶特权。例如:

    创建用户“repl”@“%.example.com”IDENTIFIED BY密码' ->请求ssl;mysql>授权复制从站。* -> TO 'repl'@'%.example.com';

    如果源上有现有的复制用户帐户,则可以添加需要SSL我要对它说:

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