当mysql/mariadb跨越互联网进行复制时别人可以窃取到mysql/mariadb的复制信息, 这些信息是明文的, 因此存在不安全性, 这里通过ssl对复制的信息进行加密

1. 创建证书中心

在主服务器上创建证书中心

cd /etc/pki/CA
生成私钥
(umask 077;openssl genrsa -out private/cakey.pem 2048) 生成自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 7300 创建证书编号
mkdir certs crl newcerts
touch index.txt
echo 00 > serial

2.  为主服务器创建证书

服务器的名称必须固定, 在申请证书时要输入服务器名称, 这书和服务器名称对应;

创建私钥
mkdir /usr/lcoal/mysql/ssl
cd /usr/local/mysql/ssl
(umask 077;openssl genrsa -out /etc/mysql/ssl/master.key 2048)
生成证书申请
openssl req -new -key master.key -out master.csr
在证书服务器上对master的证书进行签发
openssl ca -in master.csr -out master.crt -days 365

3. 创建从服务器证书

(umask 077;openssl genrsa -out /etc/mysql/ssl/slave.key 2048)
openssl req -new -key slave.key -out slave.csr
将从服务器的证书申请文件复制到证书服务器上进行签发
openssl ca -in slave.csr -out slave.crt -days 365

4. 修改证书权限和mysql配置文件

将证书的公钥cacert.pem复制到主从服务器的目录下
cd /etc/mysql/ssl
cp /etc/pki/CA/cacert.pem ./
chown -R mysql.mysql master.crt master.key cacert.pem
chmod 600 master.crt master.key cacert.pem vim /etc/my.cnf log-bin=master-log
server-id=1
skip_name_resolve = ON
innodb_file_per_table = ON
ssl
ssl_ca = /etc/mysql/ssl/cacert.pem
ssl_cert = /etc/mysql/ssl/master.crt
ssl_key = /etc/mysql/ssl/master.key 修改从服务器配置
cd /etc/mysql/ssl
cp /etc/pki/CA/cacert.pem ./
chown -R mysql.mysql slave.crt slave.key cacert.pem
chmod 600 slave.crt slave.key cacert.pem vim /etc/my.cnf relay-log=relay-log
server-id=2
skip_name_resolve = ON
innodb_file_per_table = ON
ssl
ssl_ca = /etc/mysql/ssl/cacert.pem
ssl_cert = /etc/mysql/ssl/slave.crt
ssl_key = /etc/mysql/ssl/slave.key

5. 在主服务上创建复制用户

MariaDB [(none)]> GTANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'10.1.52.%' IDENTIFIED BY 'replpass' REQUIRE SSL;
MariaDB [(none)]> FLUSH PRIVILEGES;
查看主服务器当前二进制位置
MariaDB [(none)]> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000005 | 7918 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

6. 在从服务器上开始复制

MariaDB [(none)]> CHANGE MASTER TO
-> MASTER_HOST='10.1.52.11',
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='replpass',
-> MASTER_LOG_FILE='master-log.000001',
-> MASTER_LOG_POS=495,
-> 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;

7. 查看从服务器的状态

MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.1.52.11
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-log.000005
Read_Master_Log_Pos: 7918
Relay_Log_File: relay-log.000002
Relay_Log_Pos: 7940
Relay_Master_Log_File: master-log.000005
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 7918
Relay_Log_Space: 8228
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: Yes
Master_SSL_CA_File: /etc/mysql/ssl/cacert.pem
Master_SSL_CA_Path:
Master_SSL_Cert: /etc/mysql/ssl/slave.crt
Master_SSL_Cipher:
Master_SSL_Key: /etc/mysql/ssl/slave.key
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)

mysql/mariadb基于ssl的主从复制的更多相关文章

  1. mysql -- mysql基于ssl的主从复制

    mysql基于ssl的主从复制由于mysql在复制过程中是明文的,所以就大大降低了安全性,因此需要借助于ssl加密来增加其复制的安全性. 主服务器node1:172.16.200.1从服务器node2 ...

  2. 基于SSL实现MySQL的加密主从复制

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012974916/article/details/53316758 大家都知道MySQL的主从复制 ...

  3. 基于SSL实现Mysql加密主从

    Mysql主从复制是明文传输的,对于一些特殊的场合是绝对不允许的,数据的安全性会受到威胁,在这里,简单的构建基于SSL的mysql主从复制 Ps:这里采用master-mysql为CA服务器 主端生成 ...

  4. MySQL/MariaDB数据库的主从复制

     MySQL/MariaDB数据库的主从复制  作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL复制概述 1>.传统扩展方式 垂直扩展(也叫向上扩展,Sacle ...

  5. Linux - centos7 下 MySQL(mariadb) 和 主从复制

    目录 Linux - centos7 下 MySQL(mariadb) 和 主从复制 MySQL(mariadb) 安装MySQL(mariadb) 配置数据库的中文支持 在远程用 mysql客户端去 ...

  6. mysql主从之基于gtid的主从复制

    一 GITD介绍 1.1 gtid的含义 Global Transaction Identifier,全局事务标识 阿里云的rds目前已经使用gtid 基于gtid的主从复制原理 每个mysql数据库 ...

  7. linux下mysql基于mycat做主从复制和读写分离之基础篇

    Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , my ...

  8. 【原】基于 HAproxy 1.6.3 Keeplived 在 Centos 7 中实现mysql mariadb galera cluster 集群分发读写 —— 上篇

    前言 有一段时间没有写blogs,乘着周末开始整理下haproxy + keeplived 实现 mysql mariadb galera cluster 集群访问环境的搭建工作. 本文集中讲hapr ...

  9. 基于SSL的MySQL主从

    master 端 配置CA和证书 [root@baseos-1_192.168.31.140 ~]# cd /etc/pki/CA/ #生成根证书的私钥 [root@baseos-1_192.168. ...

随机推荐

  1. Linq-Contains查询

    customers.Where(c => c.Name.Contains("john"));

  2. VS2017专业版使用最新版Qt5.9.2教程

    VS2017专业版使用最新版Qt5.9.2教程(最新教材) 最近三天一直在安装Qt5.9.2,为了能够在自己专业版的VS2017上面使用?可以算是花费了不少的功夫.但是一路上并不是很顺利,就在刚才,终 ...

  3. JS与Jquery的事件委托

    参考:http://www.ituring.com.cn/article/467 概念: 什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委 ...

  4. zoj 2876 Phone List

    #include <stdio.h> #include <string.h> #include <stdlib.h> #define ZERO 0 const in ...

  5. ZH奶酪:AngularJS/JavaScript上传图片【PC端】

    [功能介绍] 类似与修改个人信息的时候,点击头像,就可以完成选择照片.上传照片等步骤达到替换头像的目的. [运行流程] (1)点击头像 (2)选择头像 (3)点击“完成”,上传头像 1.HTML图片部 ...

  6. ZH奶酪:中文依存句法分析概述及应用

    句法分析是自然语言处理领域的一个关键问题,如能将其有效解决,一方面,可对相应树库构建体系的正确性和完善性进行验证;另一方面,也可直接服务于各种上层应用,比如搜索引擎用户日志分析和关键词识别,比如信息抽 ...

  7. 带你走进EJB--将EJB发布为Webservice(4)

    接下来的我们将会自定义一个对象,然后看看EJB是如何对复杂的参数发布成WebService的. 代码如下:在第一个版本的基础之上加上增加用户的方法,参数为User. package com.tgb.e ...

  8. 使用com.jayway.jsonpath.JsonPath包进行JSON的快速解析、设置值需要注意的性能提升方法

    一.包地址 1.Maven:http://mvnrepository.com/artifact/com.jayway.jsonpath/json-path <!-- https://mvnrep ...

  9. MySql 比Replace Into更适合的用法,外加SqlServer的方式。

    Mysql: INSERT INTO `his_examine_result` (Mid,His_Examine_Mid, His_File_Mid, ResultType, His_Employee ...

  10. ACID、Data Replication、CAP与BASE

    ACID 在传数据库系统中,事务具有ACID 4个属性. (1) 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行. (2) 一致性(Consiste ...