您的位置:首页 > 数据库 > MySQL

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

2017-10-18 07:54 1171 查看
由于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/data
Generating 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库然后再从上面查看是否同步






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






希望对您有所帮助~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: