我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于 SSL 实现MySQL主从复制

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于 SSL 实现MySQL主从复制


	基于 SSL 实现MySQL主从复制
[数据库教程]

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


 #在MySQL5.7之后,安装完毕MySQL会在data目录下自动生成,这里模拟没有这些文件
 [[email protected] ~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data        # 创建一个新的ssl文件

技术图片

[[email protected] ~]# systemctl restart mysqld    # 重启服务
#查看mysql错误日志
[[email protected] ~]# tail -20 /usr/local/mysql/data/mysql.err 
#报错信息显示是不能获得私钥
#查询后发现没有r权限
[[email protected] ~]# ll  /usr/local/mysql/data/server-key.pem 
-rw------- 1 root root 1679 Jun 17 23:55 /usr/local/mysql/data/server-key.pem
[[email protected] ~]# chmod +r /usr/local/mysql/data/server-key.pem 
[[email protected] ~]# 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
#重启服务
[[email protected] ~]# 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 连接)

[[email protected] ~]# cat /etc/my.cnf          # 开启二进制日志
[mysqld]
log_bin=mysql-bin
server-id=1
[[email protected] ~]# 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、从服务器配置


[[email protected] ~]# cat /etc/my.cnf     # 开启中继日志
[mysqld]
relay_log=relay-bin
relay_log_index=slave-relay-bin
server-id=2          # 注意server-id 要唯一
#主服务器操作,将证书给到从服务器
[[email protected] ~]# cd /usr/local/mysql/data/
[[email protected] data]# scp ca.pem client-cert.pem client-key.pem [email protected]:/usr/local/mysql/data/
#查看从主服务器上方复制过来的证书
[[email protected] 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 权限
[[email protected] data]# chmod +r client-key.pem 
[[email protected] 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
[[email protected] data]# systemctl restart mysqld      # 重启服务

查看 mysqld.err 是否有错误日志 ,查看ssl是否被支持
技术图片
在配置主从复制之前可以在从 mysql 上用 SSL 连接主服务器试试:


[[email protected] 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 测试连接成功,并且登入的 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 statusG

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

基于 SSL 实现MySQL主从复制

原文地址:https://blog.51cto.com/14306186/2511571

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基于 SSL 实现MySQL主从复制

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于 SSL 实现MySQL主从复制

1、主服务器配置1)、在主服务器创建SSL/RSA文件 #在MySQL5.7之后,安装完毕MySQL会在data目录下自动生成,这里模拟没有这些文件 [[email protected] ~]# mysql_ssl_rsa_setup --user=mysql
基于 SSL 实现MySQL主从复制
2016-06-28

MySQL基于SSL安全连接的主从复制怎么实现

本文小编为大家详细介绍“MySQL基于SSL安全连接的主从复制怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL基于SSL安全连接的主从复制怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。生
2023-07-05

MySQL基于SSL安全连接的主从复制(过程详解)

目录主从复制的原理部署master1. 主机创建 SSL/RSA 文件2. 赋予权限并重启。3. 登录mysql查看ssl是否开启,并创建一个复制用户。4. master开启二进制日志,重启后查看二进制日志文件。5. 防火墙配置,实验环境中
2023-04-06

MySQL主从复制基于binlog与GTID详解

目录一、基于binlog的主从复制搭建1、准备环境2、数据库中创建并授权有主从复制权限账户3、主库的配置5、修改UUID6、查看从库当前监听主库状态7、其余从库配置与以上相同二、基于GTID的主从复制搭建1、准备三台mysql机器环境,并且
MySQL主从复制基于binlog与GTID详解
2024-10-04

编程热搜

目录