mysql数据库基于SSL实现主从复制

实验环境:

node1:192.168.4.61

node2:192.168.4.62

CA:192.168.4.63

node1和node2时间同步

[root@node1~]#ntpdate 172.18.0.1

[root@node2~]#ntpdate 172.18.0.1

[root@node1~]#vim /etc/chrony.conf #node1和node2操作一样

[root@node1~]#systemctl start chronyd.service #启动服务

node1和node2基于key连接

[root@node1~]#ssh-keygen

[root@node1~]#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.4.62#将公钥复制到node2上

node2操作和node1操作相同。

修改hosts文件

node1和node2配置相同

[root@node1~]#vim /etc/hosts

  3 192.168.4.61 node14 192.168.4.62 node2

确保关闭iptables和selinux

node1和node2安装mariadb数据库

[root@node1~]#yum install -y mariadb-server

[root@node2~]#yum install -y mariadb-server

配置node1为主服务器

[root@node1~]#vim /etc/my.cnf.d/server.cnf

[root@node1~]#systemctl start mariadb #启动mariadb服务

MariaDB [(none)]> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.62' IDENTIFIED BY '123456';  #对用户授权
查看是否开启二进制日志
MariaDB [(none)]> SHOW VARIABLES LIKE '%log%bin%';

在node1上二进制日志状态信息
MariaDB [(none)]> SHOW MASTER STATUS;

配置node2从服务器

[root@node2~]#vim /etc/my.cnf.d/server.cnf

[root@node2~]#systemctl start mariadb #启动mariadb服务

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.61',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=417;   #设置连接主服务器
启动从服务器
MariaDB [(none)]> START SLAVE;
启动IO线程和SQL线程
MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;
查看从服务器状态
MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;

如果出现图中红框中的信息说明已经启动成功。
测试是否已经实现主从复制

实现SSL功能

搭建CA服务器

[root@CA/etc/pki/CA]#touch index.txt

[root@CA/etc/pki/CA]#echo 01 > serial

生成key文件

[root@CA/etc/pki/CA]#(umask 077;openssl genrsa -out private/cakey.pem 2048)

生成自签证书

[root@CA/etc/pki/CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650

node1生成证书

[root@node1~]#mkdir /etc/mysql/ssl -pv

[root@node1~]#chown mysql.mysql /etc/mysql/ssl/ -R

[root@node1/etc/mysql/ssl]#(umask 077;openssl genrsa -out master.key 2048)[root@node1/etc/mysql/ssl]#openssl req -new -key master.key -out master.csr

[root@node1/etc/mysql/ssl]#scp master.csr 192.168.4.63:/etc/pki/CA/newcerts/

[root@CA/etc/pki/CA/newcerts]#openssl ca -in master.csr -out master.crt -days 365

[root@CA/etc/pki/CA/newcerts]#scp master.crt ../cacert.pem 192.168.4.61:/etc/mysql/ssl

[root@node1~]#vim /etc/my.cnf.d/server.cnf

[root@node1~]#systemctl restart mariadb

查看是否开启SSL功能

node2生成证书

[root@node2~]#mkdir /etc/mysql/ssl -pv

[root@node2~]#chown mysql.mysql /etc/mysql/ssl/ -R

[root@node2/etc/mysql/ssl]#(umask 077;openssl genrsa -out slave.key 2048)

[root@node2/etc/mysql/ssl]#openssl req -new -key slave.key -out slave.csr

[root@node2/etc/mysql/ssl]#scp slave.csr 192.168.4.63:/etc/pki/CA/newcerts

[root@CA/etc/pki/CA/newcerts]#openssl ca -in slave.csr -out slave.crt -days 365

[root@CA/etc/pki/CA/newcerts]#scp slave.crt ../cacert.pem 192.168.4.62:/etc/mysql/ssl

[root@node2/etc/mysql/ssl]#vim /etc/my.cnf.d/server.cnf

重启服务

[root@node2/etc/mysql/ssl]#systemctl restart mariadb

基于SSL连接

node1授权

MariaDB [(none)]> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.62' IDENTIFIED BY '123456' REQUIRE SSL;

测试

[root@node2~]#mysql -ujoah -p123456 -h192.168.4.61 --ssl

node2连接主服务器以ssl复制

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.61',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000008',MASTER_LOG_POS=429,MASTER_SSL=1,MASTER_SSL_CA='/etc/mysql/ssl/cacert.pem',MASTER_SSL_CERT='/etc/mysql/ssl/slave.crt',MASTER_SSL_KEY='/etc/mysql/ssl/slave.key';MariaDB [(none)]> START SLAVE;  #启动从服务器MariaDB [(none)]> SHOW SLAVE STATUS\G;

小结

(1)如果你已经正确的添加了证书,但是启动以后还是没有启动SSL功能,有可能没有权限

[root@node2~]#chown mysql.mysql -R /etc/mysql/ssl

(2)如果出现图片中的问题,停止slave即可

(3)每一个过程中都需要验证是否成功然后进行下面的操作。

转载于:https://blog.51cto.com/merit/1980965

mysql基于SSL实现主从复制相关推荐

  1. mysql 基于 ssl 的主从复制

    1.创建证书中心 创建证书颁发机构,首先要生成ca自己的私钥,如下: cd /etc/pki/CA (umask 077;openssl genrsa -out /etc/pki/CA/private ...

  2. MySQL基于SSL协议的主从复制

    数据对于大部分公司来说都是最重要的部分,而MySQL的服务器在同步数据时,默认是使用明文进行传输,所以接下来就来说说MySQL基于SSL协议进行密文传输数据的主从复制模式. 逻辑拓扑: 接下来的实验中 ...

  3. mysql基于ssl安全连接的主从复制

    SSL安全套接层,即其继任者传输层安全是为网络通信提供安全即数据完整性的一种安全协议.复制默认是明文进行传输,通过SSL加密可以大大提高数据的安全性. 拓扑图: 在主mysql创建SSL/RSA文件 ...

  4. mysql 基于ssl认证

    为了让数据传输更加安全,因此 实验环境: 两台centos 7.2,一台mysql服务器,一台客户端 为了方便实验,CA证书也在mysql服务器上 服务端操作(192.168.153.128) 1,先 ...

  5. mysql主从备份 ssl_基于SSL的mysql主从复制

    基于SSL的mysql主从复制 [背景] MySQL的协议是明文的,当复制一些重要数据时.有时需要用到SSL功能,以保证数据的安全性. [准备] 准备前期准备 一.主从时间一致性 [root@node ...

  6. MySQL:安装和基于SSL加密的主从复制(基于5.7)

    小生博客:http://xsboke.blog.51cto.com -------谢谢您的参考,如有疑问,欢迎交流 目录: --------mysql-5.7.13简介及安装 --------配置my ...

  7. Mysql原理、主从复制、半同步复制及基于SSL复制

    本篇博文主要讲解Mysql主从复制.半同步.基于SSL加密的复制 简介 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.MySQL被广泛地应用在Internet上 ...

  8. 基于SSL的mysql(MariaDB)主从复制

    一.前言 备份数据库是生产环境中的首要任务,重中之重,有时候不得不通过网络进行数据库的复制,这样就需要保证数据在网络传输过程中的安全性,因此使用基于SSL的复制会大加强数据的安全性 二.准备工作 1. ...

  9. mysql主从配置 ssl_Mysql主从基本配置及基于ssl的配置详解

    一.网络拓扑图 二.实验简介 如图所示,本实验主要是实现两台Mysql服务器之间的主从复制,包括:设置主从服务器之间的半同步.mysql的复制过滤.和基于SSL的mysql主从复制功能,上图中 主服务 ...

最新文章

  1. 亚马逊首家“无人超市”系统存在bug?!开业当天,记者中途换装成功骗过摄像头...
  2. 可以替代Viso的小巧开源工具DIA。
  3. docker-compose常用命令整理及使用示例
  4. Qt Creator使用自定义字体
  5. java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject
  6. vue使用better-scroll实现下拉刷新、上拉加载
  7. [Leetcode][第546题][JAVA][移除盒子][递归][动态规划]
  8. wget在线扒站程序php源码
  9. 特斯拉在以色列开售Model 3 比国内贵出30%!
  10. 几个常用JAVA开源项目的地址荟萃
  11. docker安装tomcat8
  12. 选择导入过滤器endnote_EndNote 知网的 Import Filter (滤件制作实例) | 科研动力
  13. [blockchain-042]eos 硅谷ecs docer编译 mongo存储
  14. ROS学习记录16【SLAM】仿真学习5——将cmd_vel转换为ackman小车的速度
  15. 路由协议 RIP、IGRP、OSPF和EIGRP 的对比
  16. 理解负反馈可以减小输出电阻
  17. 华硕h81m一k跳线图_主板跳线接法
  18. c语言转fpga原理,要想玩转FPGA,就必须理解FPGA内部的工作原理-可编程逻辑-与非网...
  19. 【错误】无法验证是否已安装所需的Microsoft更新KB2919355
  20. 手把手教你怎么批量压缩视频文件

热门文章

  1. wxWidgets的安装与编译 -《跟我学wxWidgets开发》系列教程
  2. c语言中表达式的运算顺序
  3. 解决IE8下上传文件问题,无需flash,无需html5
  4. Spring安装和使用(Eclipse环境)
  5. Python散点图绘制:汽车速度与制动距离的关系
  6. JAVA多线程之线程间的通信方式
  7. 如何赢在混合云与计算时代?解读英特尔再度回归芯“智”向
  8. 程序员节日的那些趣事与囧事!
  9. windows还原系统_如何在Windows 7、8和10中使用系统还原
  10. JavaWeb第一天--前端技术