mariadb实现主从加密通讯的详细步骤

 

1. 实验环境:

 

A. 3台centos7服务器,mariadb版本:5.5.60

 

B. 服务器角色:

	a)	master节点:192.168.36.121
	b)	slave节点:192.168.36.120
	c)	CA服务器:192.168.36.47

 

2. 具体步骤:

 

A. CA服务器:

 

a) 创建存放证书和私钥的目录
	mkdir -p /etc/my.cnf.d/ssl

 

b) 生成CA私钥
	cd /etc/my.cnf.d/ssl
	( umask 0666;openssl genrsa 2048 > cakey.pem )

 

c) 生成自签名证书
	openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650

 

d) 查看自签名证书
	openssl x509 -in cacert.pem -noout -text

 

e) 生成master私钥和证书申请
	openssl req -newkey rsa:1024 -days 365 -nodes -keyout master.key > master.csr

 

f) 给master颁发证书
	openssl x509 -req -in master.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 > master.crt

 

g) 查看master证书
	openssl x509 -in master.crt -noout -text

 

h) 生成slave私钥和证书申请
	openssl req -newkey rsa:1024 -days 365 -nodes -keyout slave.key > slave.csr

 

i) 给slave颁发证书
	openssl x509 -req -in slave.csr -CA cacert.pem -CAkey cakey.pem -set_serial 02 > slave.crt

 

j) 查看slave证书
	openssl x509 -in master.crt -noout -text

 

k) 把CA自签名证书+master/slave的证书和私钥发送到对应的服务器
	scp -r /etc/my.cnf.d/ssl/ 192.168.36.121:/etc/my.cnf.d/
	scp -r /etc/my.cnf.d/ssl/ 192.168.36.120:/etc/my.cnf.d/
	注意:
		1、颁发过证书后,证书申请文件已无用处
		2、正常情况下,应该复制对应的证书和私钥,同时要保护好私钥

 

B. master节点:

 

a) 删除无用的证书和证书申请文件
	cd /etc/my.cnf.d/ssl/
	\rm -rf master.*
	\rm -rf cakey.pem
	\rm -rf slave.csr

 

b) 修改配置文件
	[mysqld]
	server_id=120
	read_only
	innodb_file_per_table
	skip_name_resolve = on 
	ssl  #有下面3项时,就表示启动ssl
	ssl-ca=/etc/my.cnf.d/ssl/cacert.pem
	ssl-cert=/etc/my.cnf.d/ssl/master.crt
	ssl-key=/etc/my.cnf.d/ssl/master.key
	datadir=/var/lib/mysql

 

c) 启动mariadb服务并查看相关变量
	systemctl start mariadb
	show variables like '%ssl%';

 

d) 创建一个强制使用加密通讯的帐户
	grant replication slave on *.* to repluser2@'192.168.36.%' identified by '123456' require ssl;

 

e) 查看并记录位置信息:mysql -e ‘show master logs’

 

C. slave节点:

 

a) 删除无用的证书和证书申请文件
	cd /etc/my.cnf.d/ssl/
	\rm -rf slave.*
	\rm -rf cakey.pem
	\rm -rf master.csr

 

b) 修改配置文件
	[mysqld]
	server_id=120
	read_only
	innodb_file_per_table
	skip_name_resolve = on 
	ssl  #有下面3项时,就表示启动ssl
	ssl-ca=/etc/my.cnf.d/ssl/cacert.pem
	ssl-cert=/etc/my.cnf.d/ssl/slave.crt
	ssl-key=/etc/my.cnf.d/ssl/slave.key
	datadir=/var/lib/mysql		

 

c) 启动mariadb服务并查看相关变量
	systemctl start mariadb
	show variables like '%ssl%';

 

d) 修改change master to
	CHANGE MASTER TO 
		MASTER_HOST='192.168.36.121',
		MASTER_USER='repluser2',  #使用加密通讯的帐户
		MASTER_PASSWORD='123456',
		MASTER_LOG_FILE='mariadb-bin.000019', 
		MASTER_LOG_POS=413,
		MASTER_SSL=1;  #启动SSL通讯

 

e) 启动复制thread
	mysql>start slave;
	mysql>show slave status\G

 

f) 测试
	master节点导入创建hellodb的sql语句:

	slave节点确认: