1、创建证书中心

创建证书颁发机构,首先要生成ca自己的私钥,如下:

cd /etc/pki/CA

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

生成自签证书,由于需要输入大量用户信息(在私有的CA上创建证书要注意所有的用户信息需要一致,从国家到部门都要相同,否则会造成证书无法使用)

生成自签名证书

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

-x509是创建自签证书是需要的参数,在创建其他证书时不能加该参数

然后创建ca所需文件,如下:

cd /etc/pki/CA

touch index.txt

echo 01 > serial

2、为master服务器创建证书

服务器的名称必须固定,在申请证书时要输入服务器的通用名称,此通用名称必须与服务器外网申请的域名相同。

创建私钥

mkdir /home/mysql/

cd /home/mysql

(umask 077;openssl genrsa -out master.key 2048)

生成证书申请文件

openssl req -new -key master.key -out master.csr

在证书服务器上对master的证书进行签发

cd /etc/pki/CA

openssl ca -in /home/mysql/master.csr -out /home/mysql/master.crt -days 365

3、创建slave服务器证书

(umask 077;openssl genrsa -out slave.key 2048)

openssl req -new -key slave.key -out slave.csr

将slave服务器的证书申请文件复制到证书服务器上进行签发

opessl ca -in slave.csr -out slave.crt -days 356

4、×××权限和mysql配置文件

将ca的证书cacert.pem复制到master、slave服务器的相应目录下

cd /home/mysql

cp /etc/pki/CA/cacert.pem ./

chown -R mysql:mysql /home/mysql

chmod 600 /home/mysql/*.key

修改master服务器的/etc/my.cnf配置文件:

vim /etc/my.cnf

[mysqld]

ssl_ca                  = /home/mysql/cacrt.pem

ssl_cert                = /home/mysql/master.crt

ssl_key                 = /home/mysql/master.key

修改slave服务器配置

vim /etc/my.cnf

[client]

ssl_ca                  = /home/mysql/cacrt.pem

ssl_cert                = /home/mysql/slave.crt

ssl_key                 = /home/mysql/slave.key


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

> grant replication slave on *.* to 'repl'@‘192.168.%' identified by 'repl' require ssl;

> flush privileges;

查看主服务器当前二进制位置

mysql> show master status ;

+————————-+————+———————+————————–+————————–+

| File                            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+————————-+————+———————+————————–+————————–+

| mysql-bin.000007 |     1015   |                              |                                    |                                    |

+————————-+————+———————+————————–+—————————+

1 row in set (0.00 sec)

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

change master to

master_host=‘192.168.0.66',

master_user='repl',

master_password='repl',

master_log_file='mysql-bin.000007',

master_log_pos=1015,

master_ssl=1,

master_ssl_ca='/home/mysql/cacrt.pem',

master_ssl_cert='/home/mysql/slave.crt',

master_ssl_key='/home/mysql/slave.key';

start slave;

show slave status;


7 排错

导致lave_IO_Running 为connecting 的原因主要有以下 3 个方面:

  • 网络不通

  • 密码不对

  • pos不对

解决步骤:

  • 对于第一个问题,一般情况下都是可以排除的,也是最容易排除的。

  • 在主库上修改用来复制的用户的密码。

  • 在做chang to 的时候注意log_pos 是否跟此时主机的相同

在主机上 show master status \G ;可以查看到

8 线上实例

服务器端配置如下:

[ec2-user@vps1 ~]$ cat /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mysqld according to the

# instructions in http://fedoraproject.org/wiki/Systemd

skip_name_resolve

open_files_limit=8192

#ssl configure

ssl_ca=/home/mysql/cacert.crt

ssl_cert=/home/mysql/mysql.crt

ssl_key=/home/mysql/mysql.key

log-bin=mysql-bin

expire_logs_days=5

server-id=1

replicate-ignore-db=mysql

replicate-ignore-db=zabbix

slow_query_log_file=/var/log/mysql/slow.log

log_queries_not_using_indexes=1

long_query_time=5

innodb_file_per_table=1

innodb_buffer_pool_size=64M

log_slave_updates

relay-log=relay-bin

relay-log-space-limit=512000000

slave-net-timeout=360

[mysql]

default_character_set=utf8

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[ec2-user@vps1 ~]$ ll /home/mysql/

总用量 16

-rw-r--r-- 1 mysql mysql 1318 6月  23 06:09 cacert.crt

-rw-r--r-- 1 mysql mysql 3715 6月  23 06:05 mysql.crt

-rw-r--r-- 1 mysql mysql  651 6月  23 06:03 mysql.csr

-rw------- 1 mysql mysql  891 6月  23 06:02 mysql.key

[ec2-user@vps1 ~]$

slave端配置如下:

[ec2-user@vps2 ~]$ cat /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mysqld according to the

# instructions in http://fedoraproject.org/wiki/Systemd

skip_name_resolve

open_files_limit=8192

#ssl configure

ssl_ca=/home/mysql/cacert.crt

ssl_cert=/home/mysql/mysql.crt

ssl_key=/home/mysql/mysql.key

log-bin=mysql-bin

expire_logs_days=5

server-id=2

replicate-ignore-db=mysql

replicate-ignore-db=zabbix

slow_query_log_file=/var/log/mysql/slow.log

log_queries_not_using_indexes=1

long_query_time=5

innodb_file_per_table=1

innodb_buffer_pool_size=64M

log_slave_updates

relay-log=relay-bin

relay-log-space-limit=512000000

slave-net-timeout=360

[mysql]

default_character_set=utf8

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[client]

ssl_ca=/home/mysql/cacert.crt

ssl_cert=/home/mysql/mysql.crt

ssl_key=/home/mysql/mysql.key

[ec2-user@vps2 ~]$

mysql> show slave status \G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.66

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 259

Relay_Log_File: relay-bin.000002

Relay_Log_Pos: 253

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB: mysql,zabbix

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: 259

Relay_Log_Space: 403

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: Yes

Master_SSL_CA_File: /home/mysql/cacert.crt

Master_SSL_CA_Path:

Master_SSL_Cert: /home/mysql/mysql.crt

Master_SSL_Cipher:

Master_SSL_Key: /home/mysql/mysql.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>

转载于:https://blog.51cto.com/caiyuanji/1792321

mysql 基于 ssl 的主从复制相关推荐

  1. mysql基于SSL实现主从复制

    mysql数据库基于SSL实现主从复制 实验环境: node1:192.168.4.61 node2:192.168.4.62 CA:192.168.4.63 node1和node2时间同步 [roo ...

  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. 微信公众平台开发模式背后的原理?
  2. 一列对应右侧几行html,css查找表格第几行第几列
  3. 全球最大的NFC 交易平台OpenSea严重漏洞可使黑客窃取钱包密币
  4. JAVA IO - RandomAccessFile
  5. 单网卡同时上内外网_Win10双网卡上网冲突(内网、外网)
  6. wpf listview透明但字不要透明_透明胶带放水里泡一泡,真是厉害,解决了很多家庭一大烦恼,实用...
  7. jsdroid 教程_南方Cass专题,全系列教程+插件汇总打包
  8. 分析百度搜索算法中:收录骤增骤减背后的原因
  9. 相控阵天线面阵方向图(FFT变换)
  10. css实现剪切蒙版,CSS3“蒙版(剪切路径)”: clip-path
  11. 还在用PS?程序猿:给我200行Python代码分分钟给你批量换脸
  12. R语言使用oneway.test函数执行单因素方差分析(One-Way ANOVA)、使用aov函数执行单因素方差分析(aov函数默认组间方差相同)
  13. 开始→运行→输入的命令集锦(欢迎补充)
  14. pc端生成支付宝支付二维码
  15. FPGA开发工具套餐搭配推荐及软件链接 (更新于2020.03.16)
  16. 使用JS判断用户操作系统是否安装某字体
  17. c++——ignore()函数
  18. mysql单表查询实例_MySQL简单查询详解-单表查询
  19. 威猛的 90 后,不等领导下班就先走,《2021 年轻人下班报告》公布
  20. 你真的会用@Transactional吗?

热门文章

  1. 谷歌提出新型自动语音识别数据增强大法,直接对频谱图“动刀”,提升模型表现...
  2. Swift For TensorFlow终于开源,但先别急着用
  3. [20190312]视图v$datafile字段OFFLINE_CHANGE#, ONLINE_CHANGE#.txt
  4. bzoj 4129 Haruna’s Breakfast 树上莫队
  5. linux笔记:linux帮助命令,man,help,whatis,apropos
  6. [转]Visual Studio 2010 MSDN 文件位置及安装注意事项
  7. 【DOM编程艺术】position属性
  8. Advanced Wlan Attacks (RADIUS)
  9. Centos系统添加系统用户操作记录审计
  10. 【转】TeXmacs:一个真正“所见即所得”的排版系统