第一步:
在master上运行命令mysql_ssl_rsa_setup,会在MySQL data目录生成如下几个文件:
- -rw------- 1 mysql mysql 1675 Apr 10 11:30 ca-key.pem # CA 私钥
- -rw-r--r-- 1 mysql mysql 1082 Apr 10 11:30 ca.pem # 自签的CA证书,客户端连接也需要提供
- -rw-r--r-- 1 mysql mysql 1086 Apr 10 11:30 client-cert.pem # 客户端连接服务端需要提供的证书文件
- -rw------- 1 mysql mysql 1675 Apr 10 11:30 client-key.pem #客户端连接服务端需要提供的私钥文件
- -rw------- 1 mysql mysql 1679 Apr 10 11:30 private_key.pem #私钥公钥的私有成员
- -rw-r--r-- 1 mysql mysql 451 Apr 10 11:30 public_key.pem #私钥公钥的共有成员
- -rw-r--r-- 1 mysql mysql 1086 Apr 10 11:30 server-cert.pem #服务端证书文件
- -rw------- 1 mysql mysql 1679 Apr 10 11:30 server-key.pem #服务端私钥文件
第二步:
在master上检查SSL是否开启
- mysql> show global 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 (.00 sec)
第三步:
在master上配置my.cnf,然后重启服务
- ssl-ca = /etc/mysql/ssl/ca.pem
- ssl-cert = /etc/mysql/ssl/server-cert.pem
- ssl-key = /etc/mysql/ssl/server-key.pem
第四步:
在master上把replication的账号的权限改下,强制SSL
- mysql> alter user 'rep'@'xx' REQUIRE SSL;
第五步:
把master上的ssl文件上传到slave的相同目录,修改my.cnf,然后重启服务。
第六步:
在slave上执行change master命令
- change master to
- master_host='master_ip',
- master_user='rep',
- master_password='xxx',
- master_port=3306,
- MASTER_AUTO_POSITION = 1,
- MASTER_SSL=1,
- MASTER_SSL_CA='/etc/mysql/ssl/ca.pem',
- MASTER_SSL_CERT = '/etc/mysql/ssl/client-cert.pem',
- MASTER_SSL_KEY = '/etc/mysql/ssl/client-key.pem';
第七步:
如果连接有问题,需要验证的话,在slave上运行如下命令:
- mysql -h master -u rep -P 3306 --ssl --ssl-ca "ca.pem" --ssl-cert "client-cert.pem" --ssl-key "client-key.pem" -p
如果SSL正常,在MySQL命令提示符下输入'\s',能看到
SSL: Cipher in use in DHE-RSA-AES256-SHA
而不是SSL: Not in use
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26950862/viewspace-3164642/
,如需转载,请注明出处,否则将追究法律责任。