前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 SSL 实现MySQL主从复制

基于 SSL 实现MySQL主从复制

作者头像
小手冰凉
发布2020-06-22 10:32:25
4410
发布2020-06-22 10:32:25
举报
文章被收录于专栏:小手冰凉小手冰凉

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

代码语言:javascript
复制
 #在MySQL5.7之后,安装完毕MySQL会在data目录下自动生成,这里模拟没有这些文件
 [root@mysql ~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data        # 创建一个新的ssl文件
基于 SSL 实现MySQL主从复制
基于 SSL 实现MySQL主从复制
代码语言:javascript
复制
[root@mysql ~]# systemctl restart mysqld    # 重启服务
#查看mysql错误日志
[root@mysql ~]# tail -20 /usr/local/mysql/data/mysql.err 
#报错信息显示是不能获得私钥
基于 SSL 实现MySQL主从复制
基于 SSL 实现MySQL主从复制
代码语言:javascript
复制
#查询后发现没有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 连接)

代码语言:javascript
复制
[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、从服务器配置

代码语言:javascript
复制
[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是否被支持

基于 SSL 实现MySQL主从复制
基于 SSL 实现MySQL主从复制

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

代码语言:javascript
复制
[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
基于 SSL 实现MySQL主从复制
基于 SSL 实现MySQL主从复制

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

代码语言:javascript
复制
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
基于 SSL 实现MySQL主从复制
基于 SSL 实现MySQL主从复制

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档