mysql ssl 主从同步_基于 SSL 实现MySQL主从复制

1、主服务器配置

1)、在主服务器创建SSL/RSA文件

#在MySQL5.7之后,安装完毕MySQL会在data目录下自动生成,这里模拟没有这些文件

[root@mysql ~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data # 创建一个新的ssl文件

20200719112738517623.png

[root@mysql ~]# systemctl restart mysqld # 重启服务

#查看mysql错误日志

[root@mysql ~]# tail -20 /usr/local/mysql/data/mysql.err

#报错信息显示是不能获得私钥

#查询后发现没有r权限

[root@mysql ~]# ll /usr/local/mysql/data/server-key.pem

-rw------- 1 root root 1679 Jun 17 23:55 /usr/local/mysql/data/server-key.pem

[root@mysql ~]# chmod +r /usr/local/mysql/data/server-key.pem

[root@mysql ~]# ll /usr/local/mysql/data/server-key.pem

-rw-r--r-- 1 root root 1679 Jun 17 23:55 /usr/local/mysql/data/server-key.pem

#重启服务

[root@mysql ~]# systemctl restart mysqld

#登录数据库查看是否支持ssl连接了

mysql> show variables like ‘%ssl%‘;

+---------------+-----------------+

| Variable_name | Value |

+---------------+-----------------+

| have_openssl | YES |

| have_ssl | YES |

| ssl_ca | ca.pem |

| ssl_capath | |

| ssl_cert | server-cert.pem |

| ssl_cipher | |

| ssl_crl | |

| ssl_crlpath | |

| ssl_key | server-key.pem |

+---------------+-----------------+

9 rows in set (0.01 sec)

#生成一个复制账号

mysql> grant replication slave on *.* to ‘req‘@‘192.168.171.%‘ identified by ‘123‘ require ssl;

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

[root@mysql ~]# cat /etc/my.cnf # 开启二进制日志

[mysqld]

log_bin=mysql-bin

server-id=1

[root@mysql ~]# systemctl restart mysqld #重启服务

mysql> show master status ; # 查看master当前状态

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000004 | 154 | | | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

2、从服务器配置

[root@mysql ~]# cat /etc/my.cnf # 开启中继日志

[mysqld]

relay_log=relay-bin

relay_log_index=slave-relay-bin

server-id=2 # 注意server-id 要唯一

#主服务器操作,将证书给到从服务器

[root@mysql ~]# cd /usr/local/mysql/data/

[root@mysql data]# scp ca.pem client-cert.pem client-key.pem root@192.168.171.145:/usr/local/mysql/data/

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

[root@mysql data]# ll ca.pem client-cert.pem client-key.pem

-rw-r--r-- 1 root root 1107 Jun 18 00:16 ca.pem

-rw-r--r-- 1 root root 1107 Jun 18 00:16 client-cert.pem

-rw------- 1 root root 1679 Jun 18 00:16 client-key.pem

#设置 client-key.pem 的 r 权限

[root@mysql data]# chmod +r client-key.pem

[root@mysql data]# vim /etc/my.cnf # 继续在my.cnf中写入

ssl-ca=/usr/local/mysql/data/ca.pem

ssl-cert=/usr/local/mysql/data/client-cert.pem

ssl-key=/usr/local/mysql/data/client-key.pem

[root@mysql data]# systemctl restart mysqld # 重启服务

查看 mysqld.err 是否有错误日志 ,查看ssl是否被支持

20200719112738713920.png

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

[root@mysql data]# mysql --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -u bak -p123 -h 192.168.171.135

20200719112738772516.png

SSL 测试连接成功,并且登入的 SSL 协议是: Cipher in use is DHE-RSA-AES256-SHA

mysql> change master to master_host=‘192.168.171.135‘,master_user=‘bak‘,master_password=‘123‘,master_log_file=‘mysql-bin.000004‘,master_log_pos=766,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‘;

mysql> start slave;

mysql> show slave status\G

20200719112738882871.png

接下来就可以在主服务器上写入数据进行测试了

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值