第一步:
在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 (0.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
阅读(7268) | 评论(0) | 转发(0) |