一、主服务器配置
1)、在主服务器建立SSL/RSA文件mysql
#在MySQL5.7以后,安装完毕MySQL会在data目录下自动生成,这里模拟没有这些文件 [root@mysql ~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data # 建立一个新的ssl文件
[root@mysql ~]# systemctl restart mysqld # 重启服务 #查看mysql错误日志 [root@mysql ~]# tail -20 /usr/local/mysql/data/mysql.err #报错信息显示是不能得到私钥
#查询后发现没有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 链接)sql
[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)
二、从服务器配置数据库
[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是否被支持
在配置主从复制以前能够在从 mysql 上用 SSL 链接主服务器试试: vim
[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 测试链接成功,而且登入的 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 status\G
接下来就能够在主服务器上写入数据进行测试了
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS) 是为网络通讯提供安全及数据完整性的一种安全协议。复制默认是明文进行传输的,经过 SSL 加密能够大大提升数据的安全性。服务器