1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MySQL基于SSL协议进行主从复制的详细操作教程【MySQL】

MySQL基于SSL协议进行主从复制的详细操作教程【MySQL】

时间:2021-07-02 11:00:09

相关推荐

MySQL基于SSL协议进行主从复制的详细操作教程【MySQL】

数据库|mysql教程

MySQL,SSL,复制,教程,MySQL教程

数据库-mysql教程

当mysql跨越互联网进行复制时别人可以窃取到mysql的复制信息,这些信息是明文的,因此存在不安全性,这里通过ssl对复制的信息进行加密。当在客户没有固定ip而要访问服务器时,mysql要允许任意地址的访问,服务端和客户端通过证书验证可以防止暴力破解。

下载收费类网站源码,vscode和vsst,ubuntu蓝牙互联,tomcat怎么启用,sqlite 人形怪,阿里云服务器 再买个数据盘吗,图片轮播 插件,前端框架哪个最难,爬虫pdf模块,php语言培训学校,排名seo优化怎么做,网站自动采集归类系统,微信网页切换代码,手机导航栏 模板,菜单不随页面滚动js,图书管理系统模版,程序资源共享lzw

开始之前让我们先来回顾一下SSL协议客户端OpenSSL的安装过程:

安装openssl

支付宝个人免签源码,vscode弹出错误,ubuntu耳机杂音,本地tomcat开通端口,wallpaper爬虫,php表格颜色,丰泽seo招商加盟,网站音乐小插件源码,模板网页html csslzw

mkdir /test/setupcd /test/setuptar zxvf openssl-0.9.8b.tar.gzcd openssl-0.9.8b./configmake && make install

asp源码 库存管理软件,ubuntu.ip设置,怎么更换项目的tomcat,蜘蛛爬虫的功效,php开发大型项目实战,沧州网页seolzw

开启mysql中ssl功能

登录Mysql查看

mysql> show variables like \%ssl%;

+---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca || | ssl_capath || | ssl_cert || | ssl_cipher || | ssl_key || +---------------+----------+

如果mysql输出如上所述,那么继续操作开启ssl;如果不是,重新编译安装mysql,注意生成makefile时填写参数正确。

退出mysql,编辑/etc/f

在[mysqld]和[mysqldump]之间,加入下列配置信息:

ssl

保存后重新启动mysql,再次登录mysql

mysql -uroot -pmysql> show variables like \%ssl%;

+---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_key | | +---------------+-------+

好了,下面进入正题:

mysql基于ssl复制

1、创建证书中心

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

cd /etc/pki/CA

生成私钥

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

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

vim /etc/pki/tls/f

[ req_distinguished_name ] countryName= Country Name (2 letter code) countryName_default = CN countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrpovinceName_default = FJ localityName = Locality Name (eg,city) localityName = FZ anizationName = Organization Name (eg,company) anizationName_default = zdz organizationalUnitName = Organizational Unit Name (eg,section) organizationalUnitName_default = zdz

生成自签证书

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

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

由于是自签证书因此要修改证书路径

vim /etc/pki/tls/f

[ CA_defalut ] dir = /etc/pki/CA certs = $dir/certs #存放生成证书的目录 crl_dir = $dir/crl #存放吊销证书的目录 database = $dir/index.txt #证书的索引文件 new_certs_dir = $dir_newcerts #新签的证书目录 serial = $dir/serial #序列号 crl = $dir/crl.pem private_key = $dir/private/cakey.pem #证书中心私钥文件

创建证书编号

mkdir certs crl newcerts touch index.txt echo 00 > serial

2、为主服务器创建证书

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

创建私钥

mkdir /usr/local/mysql/ssl cd /usr/local/mysql/ssl (umask 077;openssl genrsa -out /usr/local/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 /usr/local/mysql/ssl/slave.key 2048) openssl req -new -key slave.key -out slave.csr

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

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

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

将证书的公钥cacert.pem复制到主从服务器的目录下

cd /usr/local/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 /usr/local/mysql/f ssl ssl_ca = /usr/local/mysql/ssl/cacrt.pem ssl_cert = /usr/local/mysql/ssl/master.crt ssl_key = /usr/local/mysql/ssl/master.key

修改从服务器配置

cd /usr/local/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 /usr/local/mysql/f ssl ssl_ca = /usr/local/mysql/ssl/cacrt.pem ssl_cert = /usr/local/mysql/ssl/slave.crt ssl_key = /usr/local/mysql/ssl/slave.key

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

grant replication slave on *.* to slave@192.168.216.133 identified by slave requere 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.216.132, master_user=slave, master_password=slave, master_log_file=mysql-bin.000007, master_log_pos=1015, master_ssl=1, master_ssl_ca= /usr/local/mysql/ssl/cacrt.pem, master_ssl_cert=/usr/local/mysql/ssl/slave.crt, master_ssl_key=/usr/local/mysql/ssl/slave.key; start slave;

查看状态

错误1:

如果要确保证书没有问题可以通过建立测试的用户同ssl进行连接在主服务器上开一个权限很大的用户,进行ssl的登录测试

grant all privileges on *.* to root@192.168.216.133′ identified by ‘root require ssl;[root@slave ssl]# mysql -uroot -proot -h192.168.216.133 –ssl-ca=cacrt.pem –ssl-cert=slave.crt –ssl-key=slave.key

Warning: Using a password on the command line interface can be insecure.ERROR 2026 (HY000): SSL connection error: ASN: before date in the future

这是由于虚拟的时间不正确导致

如果这时候不使用ssl方式进行连接则会报出错误

[root@slave ssl]# mysql -uroot -proot -h192.168.216.133;

Warning: Using a password on the command line interface can be insecure.ERROR 1045 (28000): Access denied for user ‘root@192.168.216.132′ (using password: YES)

错误2:

在配置文件中添加证书配置后执行 show variables like ‘%ssl%’显示

这是由于没有将证书的属主改为mysql,可以从日志中得知是无权限获取私钥

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。