要使用加密连接传输复制期间所需的二进制日志,源服务器和复制服务器都必须支持加密网络连接。如果任何一台服务器都不支持加密连接(因为没有为它们编译或配置),则不可能通过加密连接进行复制。
为复制设置加密连接类似于为客户端/服务器连接设置加密连接。您必须获取(或创建)一个可以在源上使用的合适的安全证书,并在每个副本上获取一个类似的证书(来自同一个证书颁发机构)。您还必须获取合适的密钥文件。
有关为加密连接设置服务器和客户端的详细信息,请参见章节6.3.1,“配置MySQL使用加密连接”.
要在源上启用加密连接,必须创建或获取适当的证书和密钥文件,然后将以下配置参数添加到源的配置中(mysqld)
源代码的部分my.cnf
文件,根据需要更改文件名:
(mysqld) ssl_ca = cacert。pem ssl_cert = server-cert。pem ssl_key = server-key.pem
文件的路径可以是相对的,也可以是绝对的;为此,我们建议您始终使用完整路径。
配置参数如下:
要在副本上启用加密连接,请使用将master更改为
声明。中加密连接所需的复制证书和SSL私钥文件的名称(客户端)
复制品的部分my.cnf
文件,或者可以使用将master更改为
声明。有关的更多信息将master更改为
声明中,看到第13.4.2.1节,“CHANGE MASTER TO语句”.
若要使用选项文件命名副本证书和密钥文件,请将以下行添加到
(客户端)
复制品的部分my.cnf
文件,根据需要更改文件名:[客户]ssl-ca = cacert。pem ssl-cert = client-cert。pem ssl密钥= client-key.pem
方法重新启动副本服务器
——skip-slave-start
选项,以阻止副本连接到源。使用将master更改为
来指定源配置,并添加MASTER_SSL
选项连接使用加密:mysql> CHANGE MASTER TO -> MASTER_HOST='source_hostname', -> MASTER_USER='repl', -> MASTER_PASSWORD='密码', -> master_ssl =1;
设置
MASTER_SSL = 1
为复制连接,然后不再设置MASTER_SSL_
Options对应于设置xxx
——ssl-mode =要求
对于客户端,如中所述加密连接的命令选项.与MASTER_SSL = 1
,只有在可以建立加密连接的情况下,连接尝试才会成功。复制连接不会回退到未加密连接,因此没有对应于——ssl-mode =首选
复制设置。如果MASTER_SSL = 0
它对应于什么——ssl-mode =禁用
.命令,为复制证书和SSL私钥文件命名
将master更改为
语句,如果您没有在副本的my.cnf
文件,添加适当的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',
选项对应于
——ssl
中所述的相同名称的选项加密连接的命令选项.为了让这些选项生效,xxx
MASTER_SSL = 1
也必须设置。对于复制连接,请为其中任何一个指定值MASTER_SSL_CA
或MASTER_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.11中已弃用,在MySQL 8.0中已被移除。对于复制连接,指定MASTER_SSL_VERIFY_SERVER_CERT = 1
对应于设置——ssl-mode = VERIFY_IDENTITY
,详见加密连接的命令选项.为了使该选项生效,MASTER_SSL = 1
也必须设置。主机名身份验证不适用于自签名证书。若要激活证书吊销列表检查,请添加
MASTER_SSL_CRL
或MASTER_SSL_CRLPATH
选择:-> MASTER_SSL_CRL = 'crl_file_name', -> MASTER_SSL_CRLPATH = 'crl_directory_name',
选项对应于
——ssl
中所述的相同名称的选项加密连接的命令选项.如果不指定,则不进行CRL检查。xxx
属性要指定复制连接所允许的密码和加密协议列表,请添加
MASTER_SSL_CIPHER
而且MASTER_TLS_VERSION
选项:-> MASTER_SSL_CIPHER = '密码列表',-> MASTER_TLS_VERSION = '协议列表',
的
MASTER_SSL_CIPHER
选项指定复制连接所允许的密码列表,其中一个或多个密码名用冒号分隔。的MASTER_TLS_VERSION
选项指定副本允许用于复制连接的加密协议。格式是这样的tls_version
系统变量,具有一个或多个逗号分隔的协议版本。可以在这些列表中使用的协议和密码取决于用于编译MySQL的SSL库。有关格式和允许的值的信息,请参见第6.3.2节,“加密连接TLS协议和密码”.更新源信息后,启动复制进程:
mysql> START SLAVE;
您可以使用
显示奴隶状态
语句,以确认已成功建立加密连接。要求副本上的加密连接并不能确保源需要来自副本的加密连接。方法在源上创建复制用户帐户,以确保源只接受使用加密连接进行连接的副本
需要SSL
选项,然后授予该用户复制的奴隶
特权。例如:CREATE USER 'repl'@'%.example.com' IDENTIFIED BY '密码' ->要求ssl;mysql>授权复制从站。* -> TO 'repl'@'%.example.com';
如果源上已有复制用户帐户,则可以添加
需要SSL
对此声明如下:mysql> ALTER USER 'repl'@'%.example.com' REQUIRE SSL