MySQL基于SSL安全连接的主从复制

简介:

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

实验环境:

   首先准备两台mysql5.7数据库,一台为主master,一台为从slave服务器

安装mysql,请点击下面的链接,有具体的安装步骤,这里不再一一介绍!!!

安装mysql:http://blog.csdn.net/kangshuo2471781030/article/details/79088357

 一、实现基于ssl安全连接的的主从复制

 (1.)在主mysql数据库上创建SSL/RSA文件

[root@kang ~]# cd /usr/local/mysql/bin/
[root@kang bin]# mysql_ssl_rsa_setup --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

(2.)查看创建好的SSL/RSA文件

(3.)重启mysqld服务

[root@kang ~]# systemctl  restart mysqld
(4.)查看mysqld的错误日志


       通过上图报错信息显示是不能获得私钥

 (5.)执行ls查看server-key.pem

[root@kang ~]# ls -l /usr/local/mysql/data/server-key.pem 
-rw-------. 1 root root 1675 Jan 18 03:29 /usr/local/mysql/data/server-key.pem
 发现没有r权限,添加可读权限

[root@kang ~]# chmod +r  /usr/local/mysql/data/server-key.pem 
[root@kang ~]# ls -l /usr/local/mysql/data/server-key.pem     
-rw-r--r--. 1 root root 1675 Jan 18 03:29 /usr/local/mysql/data/server-key.pem
重启mysql数据库服务,这时再次查看日志就没有错误信息了。

[root@kang ~]# systemctl  restart  mysqld 
   
(6.)登录mysql数据库查看ssl信息

mysql> show variables  like '%ssl%';

  
从上图可以看出mysql支持了ssl安全连接

注意:启用mysql支持ssl安全连接主要用于mysql主从复制(局域网可以明文复制,但互联网复制建议采用ssl连接)

(7.)在主数据库创建ssl完成之后,再给从服务器slave授权,并且允许从服务器来到主服务器复制数据。

mysql> grant replication slave on *.* to  'rep'@'192.168.197.%' identified by 'pwd123' require ssl;

(8.)在主数据库上启用二进制日志,并重启mysql服务

vim  /etc/my.cnf

注意:必须添加server-id,而且id值不能相同。

   重启mysql服务:

[root@kang ~]# systemctl  restart mysqld
(9.)登录主服务器上查看数据库的状态:

show master status;

注意:上图所示的file和Position的值,配置从服务器要用到。

  (10)配置防火墙允许3306/tcp通信放行。

[root@kang ~]# firewall-cmd --permanent --add-port=3306/tcp 
success
[root@kang ~]# firewall-cmd --reload 
success

注意:以上操作都是在主数据库服务器完成的

接下来就到从服务器上面去配置

  (11.)配置从服务器的主配置并添加中继日志以及server-id。

vim /etc/my.cnf

     重启mysql服务:

[root@kang ~]# systemctl  restart mysqld

注意:server-id不能唯一,不能和其他主机的mysql重复!!!!

(12)、到主服务器上把生成的证书发送给从服务器。

[root@kang ~]# cd /usr/local/mysql/data/
[root@kang data]# scp ca.pem client-cert.pem client-key.pem root@192.168.197.135:/usr/local/mysql/data/

注意:192.168.197.135是从服务器的IP地址

   查看从主服务器上复制过来的证书 :

[root@kang ~]# cd /usr/local/mysql/data/
[root@kang data]# ls -l  ca.pem client-cert.pem client-key.pem 
-rw-r--r--. 1 root root 1074 Jan 18 04:38 ca.pem
-rw-r--r--. 1 root root 1078 Jan 18 04:38 client-cert.pem
-rw-------. 1 root root 1679 Jan 18 04:38 client-key.pem
(13)设置client-key.pem的r读取权限

[root@kang data]# chmod  +r  client-key.pem 
[root@kang data]# ls -l  client-key.pem 
-rw-r--r--. 1 root root 1679 Jan 18 04:38 client-key.pem
(14)继续在从服务器上配置ssl,修改/etc/my.cnf,添加如下内容


重启mysql服务::

[root@kang ~]# systemctl  restart mysqld
查看mysqld.err文件是否有错误日志:


查看ssl是否被支持:

mysql> show variables  like '%ssl%';

那么在配置主从复制之前,可以在从服务器上用ssl连接主服务器试试:

[root@kang data]# mysql --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -urep -ppwd123 -h 192.168.197.130

注意:192.168.197.130是主服务器的IP地址


ssl测试连接成功,并且登入的SSL协议是:

Cipher in use is DHE-RSA-AES256-SHA

(15)接下来开始配置主从复制replication,登录从mysql数据库进行配置:

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

(16)启用从服务器slave功能


查看从服务器的状态,如果IO线程和SQL线程的值都为YES的话,那么就说明从服务器能够正常连接访问主服务器。



测试:

在主服务器上分别创建库、创建表、插入数据进行测试!!!


此时可以到从服务器上查看了!!


以上数据同步成功!!

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(TransportLayer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。复制默认是明文进行传输的,通过SSL加密可以大大提高数据的安全性。


到这里mysql基于ssl主从复制就完事了 !

希望对你有所帮助 !!! 

再见!!再见再见再见


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值