一,mysql 基于ssl认证
ssl认证可以让让数据传输更加安全
实验环境: 两台centos 7.2,一台mysql服务器,一台客户端
为了方便实验,CA证书也在mysql服务器上
服务端操作(192.168.153.128)
1,先安装mariadb和OpenSSL
yum install mariadb-server openssl -y
2,配置证书
cd /etc/pki/CA/
touch index.txt
echo 01 > serial
(umask 066;openssl genrsa -out private/cakey.pem 4096)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3600
mkdir /var/lib/mysql/ssl #创建mysql的私钥等的目录
cd /var/lib/mysql/ssl
(umask 066;openssl genrsa -out mysql.key 2048)
openssl req -new -key mysql.key -days 365 -out mysql.csr
openssl ca -in mysql.csr -out mysql.crt -days 365
3,修改mariadb配置文件
vim /etc/my.cnf
#内容如下
innodb_file_per_table=ON
skip_name_resolve=ON
ssl
ssl-ca=/etc/pki/CA/cacert.pem
ssl-cert=/var/lib/mysql/ssl/mysql.crt
ssl-key=/var/lib/mysql/ssl/mysql.key
4,修改权限,否则ssl 会失败(可以通过log得知该信息)
setfacl -m u:mysql:rwx /var/lib/mysql/ssl/mysql.key
5,重启服务
6,授权一个需要ssl访问的用户
grant all on *.* to 'xixi'@'192.168.153.129' identified by 'xixi' require ssl;
flush privileges;
7,将配置文件复制到mysql客户端
scp /etc/pki/CA/cacert.pem 192.168.153.129:/etc/mysqlssl/
scp /var/lib/mysql/ssl/* 192.168.153.129:/etc/mysqlssl/
mysql客户端操作
8,测试访问
yum install mariadb -y
mysql -uxixi -pxixi -h192.168.153.128 --ssl-ca=/etc/mysqlssl/cacert.pem --ssl-cert=/etc/mysqlssl/mysql.crt --ssl-key=/etc/mysqlssl/mysql.key
10,为了方便访问
也可以将ssl信息写在配置文件中
vim /etc/my.cnf
# 内容如下
[mysql]
ssl-ca=/etc/mysqlssl/cacert.pem
ssl-cert=/etc/mysqlssl/mysql.crt
ssl-key=/etc/mysqlssl/mysql.key
二, 基于ssl主从复制
实验环境:
两台mysql服务器
一台CA服务器
实验之前请先关闭防火墙和SELinux
实验如下:
1,先配置CA
2,配置主从服务器的mysql的key和公钥,然后在CA上签署证明(主从服务器配置相同)
3,将csr复制到CA上进行签证(主从都要做同样的操作),签完证之后连同CA的公钥一起复制到主从服务器
4,配置主服务的mysql相关信息
vim /etc/my.cnf
5,启动服务,发现有错误,如下,检查为权限问题
6,启动mysql成功后,检查ssl是否成功
7,授权
grant replication client,replication slave on *.* to 'repluser'@'192.168.153.%' identified by 'replpass';
8,查看binlog信息,记录binlog的文件和事件位置,为从服务器配置负责数据做准备
9,配置从服务器
vim /etc/my.cnf
10,启动从服务器,并开始连接主服务器
change master to master_host='192.168.153.128',master_user='repluser',master_password='replpass',master_log_file='master-log.000006',master_log_pos=499,master_ssl_ca='/etc/mysqlssl/cacert.pem',master_ssl_cert='/etc/mysqlssl/mysql.crt',master_ssl_key='/etc/mysqlssl/mysql.key';
10,查看数据同步状态
本文含有隐藏内容,请 开通VIP 后查看