实现基于SSL\RSA安全连接的主从复制

测试环境:

主机

IP

Server-id

Master

192.168.159.128

1

Slave

192.168.159.129

2

切换目录到bin下

ssl连接mysql mysql ssl连接_ssl连接mysql

 

在主服务器中创建ssl文件

ssl连接mysql mysql ssl连接_服务器_02

 

ssl创建命令:

mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

查看data目录里是否生成ssl文件

ssl连接mysql mysql ssl连接_ssl连接mysql_03

 

查看错误日志:mysqld.err

ssl连接mysql mysql ssl连接_重启_04

 

添加权限给获取私钥

ssl连接mysql mysql ssl连接_服务器_05

 

修改后权限重启服务,查看错误日志就不会有报错信息了

查看数据库支不支持ssl安全连接,下面yes两项为可以,如果不是yes说明有问题

ssl连接mysql mysql ssl连接_mysql_06

 

创建授权用户

ssl连接mysql mysql ssl连接_数据库_07

 

授权命令:grant replication slave on *.* to 'rep'@'192.168.159.%' identified by '123' require ssl;

开启二进制日志,重启mysql服务

ssl连接mysql mysql ssl连接_服务器_08

 

查看主mysql的状态

ssl连接mysql mysql ssl连接_服务器_09

 

配置防火墙允许mysql服务3306端口号通过

ssl连接mysql mysql ssl连接_服务器_10

 

在从服务器上配置mysql文件/etc/my.cnf 注意server_id必须唯一,不能与其他mysql主机冲突

ssl连接mysql mysql ssl连接_重启_11

 

在主服务器颁发证书给从服务器

ssl连接mysql mysql ssl连接_重启_12

 图中内容如下:

scp ca.pem client-cert.pem client-key.pem root@192.168.159.129:/usr/local/mysql/data/

查看给从服务器的证书 添加读取权限

ssl连接mysql mysql ssl连接_ssl连接mysql_13

 

之后修改/etc/my.cnf文件添加参数

ssl连接mysql mysql ssl连接_重启_14

 

重启mysql服务

systemctl  restart  mysqld

查看mysql服务器是否支持ssl   如果不是yes看看错误日志,排查

 

ssl连接mysql mysql ssl连接_mysql_15

使用授权用户在从服务器上登录主服务器中,测试是否成功

ssl连接mysql mysql ssl连接_服务器_16

 

上图已经登录到主服务器  登录格式:

mysql --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -urep -p123 -h 192.168.159.128

注:往下配置的时候要退出刚才使用rep登录的数据库,报错信息如下:

ssl连接mysql mysql ssl连接_mysql_17

 

配置主从服务器replicate,在从服务器中配置

ssl连接mysql mysql ssl连接_ssl连接mysql_18

 

命令如下:

change master to
master_host='192.168.159.128',
master_user='rep',
master_password='123',
master_log_file='mysql_bin.000002',
master_log_pos=154,
master_ssl=1,
master_ssl_ca='/usr/local/mysql/data/ca.pem',
master_ssl_cert='/usr/local/mysql/data/client-cert.pem',
master_ssl_key='/usr/local/mysql/data/client-key.pem';

启用从服务器,查看从的状态是否为yes

ssl连接mysql mysql ssl连接_mysql_19

 

测试在主服务器上创建数据库、表、插入数据,从服务器是否同步

 

ssl连接mysql mysql ssl连接_mysql_20

查看从服务器是否同步

ssl连接mysql mysql ssl连接_数据库_21

 

此时查看data目录里面就会有之前在/etc/my.cnf参数指定的文件

ssl连接mysql mysql ssl连接_数据库_22

 



转载于:https://blog.51cto.com/12832314/1945426