os: centos 7.4
db: mysql 8.0.19
MySQL 8.0.4或更高版本的複製方案中,與主/主服務器的從/副本連接可以使用通過 caching_sha2_password 身份驗證的帳戶。對於此類連接,同樣的要求適用於使用通過 caching_sha2_password 身份驗證的帳戶的其他客戶端,使用安全連接或基於RSA的密碼交換。
192.168.56.60 node1 # master
192.168.56.61 node2 # slave
版本
[root@node2 ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
[root@node2 ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.19 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.19 |
+-----------+
1 row in set (0.00 sec)
創建複製賬戶
set sql_log_bin=0;
create user 'replicator'@'192.168.56.%' identified by 'mysqlmysql';
grant replication slave,replication client on *.* to 'replicator'@'192.168.56.%';
flush privileges;
set sql_log_bin=1;
show master status\G
連接到 caching_sha2_password 主/從複製的帳戶
mysql> change master to
master_host='192.168.56.100',
master_port=3306,
master_user='replicator',
master_password='mysqlmysql',
master_log_file='mysql-bin.000141',
master_log_pos=154,
master_connect_retry=10,
master_retry_count=86400,
MASTER_SSL = 1,
GET_MASTER_PUBLIC_KEY = 1,
MASTER_PUBLIC_KEY_PATH='/var/lib/mysql/public_key.pem';
連接到 caching_sha2_password GTID複製的帳戶
mysql> change master to
master_host='192.168.56.92',
master_port=3306,
master_user='replicator',
master_password='mysqlmysql',
master_auto_position=1,
master_connect_retry=10,
MASTER_SSL = 1,
GET_MASTER_PUBLIC_KEY = 1,
MASTER_PUBLIC_KEY_PATH='/var/lib/mysql/public_key.pem';
連接到 caching_sha2_password 組複製的帳戶
# vi /etc/my.cnf
# ssl for group replicaiotn;
loose-group_replication_recovery_use_ssl = ON;
loose-group_replication_recovery_get_public_key = 1;
loose-group_replication_recovery_public_key_path = '/var/lib/mysql/public_key.pem';
SET GLOBAL group_replication_recovery_use_ssl = ON;
SET GLOBAL group_replication_recovery_get_public_key = 1;
SET GLOBAL group_replication_recovery_public_key_path = '/var/lib/mysql/public_key.pem';