基于SSL实现Mysql加密的主从复制配置

来源:互联网 发布:sql语句给字段起别名 编辑:程序博客网 时间:2024/06/05 00:41

由于mysql的主从复制是明文传送的,但如果在生产环境中跨网络我们使用的主从还是明文传送的话,就保证不了数据的安全性,为了解决这一问题,我们需要加密进行传送,也就是基于SSL的加密方法进行传输数据

实验环境:Master---Centos7.2 ---Mysql5.7

                  Slave---Centos7.2---Mysql5.7

首先需要安装mysql5.7这里不做演示,大家可以参考我的这篇文章:http://blog.csdn.net/qq_39591494/article/details/78255286

一、基于SSL实现Mysql加密的主从复制配置

1)在mysql主上创建SSL/RSA文件

# cd /usr/local/mysql/bin/[root@yankerp bin]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/dataGenerating a 2048 bit RSA private key.........................................................................................+++..................................................................................................+++writing new private key to 'ca-key.pem'-----Generating a 2048 bit RSA private key.+++....+++writing new private key to 'server-key.pem'-----Generating a 2048 bit RSA private key............................+++.....+++writing new private key to 'client-key.pem'-----

cd /usr/local/mysql/bin ---切换目录 

mysql_ssl_rsa_setup    --user=mysql    --basedir=/usr/local/mysql   --datadir=/usr/local/mysql/data ---创建新的 SSL 文件

创建完成后我们进入/usr/local/mysql/data中查看,我们可以看到有pem后缀名这样的文件


2)产生了pem后缀文件时,我们重启mysql服务,查看mysql的错误日志

# systemctl restart mysqld

以上错误中提示不能获取私钥,这时候我们查看错误中的server-key.pem


我们发现server-key.pem这个文件没有r权限这时候我们给予权限再次重启mysql服务


这时候我们重启了mysql服务,错误日志中就没有错误了

3)登陆mysql查看mysql是否支持ssl安全连接


4)在主 mysql 上的操作完成,再生成一个复制帐号:REQUIRE SSL


在主上启用二进制日志,添加以下两行


注意:以上的server-id是唯一的,主和从的server-id都是不一样的

5)重启mysql服务查看mysql主的状态,开放3306端口


要记住上图所显示的 file 和 position 的值,配置从服务器要用到

二、配置mysql从服务器

1)在从mysql的/etc/my.cnf文件内容


注:server_id要唯一,不能和主mysql的重复

2)把主mysql生成的证书给了从服务器


3)在从上面查看主传来的证书,并且给予client-key.pem权限

随后继续在从上面配置ssl,修改/etc/my.cnf文件

# vim /etc/my.cnf 

然后重启mysql服务,并查看mysql错误日志是否有错误信息


以上确定没报错后,查看 从SSL 是否被支持:


4)在配置主从复制之前可以在从 mysql 上用 SSL 连接主服务器试试:


以上图中的192.168.236.100是Master的ip地址


此时SSL 测试连接成功

5)在从上 change master to

#change master to master_host='192.168.236.100',master_user='rep',master_password='pwd123',master_log_file='mysql-bin.000004',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';

master_log_file='mysql-bin.000004', 是在主上面show master status的结果这个不可以随便写

6)启用从并且查看从的状态,以下两个值必须为 yes,代表从服务器能正常连接主服务器


测试:在主mysql上创建一个zhangsan库然后再从上面查看是否同步


创建完成后在从上面验证。


希望对您有所帮助~



原创粉丝点击