$mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -h192.168.200.245 -urep -pEnter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 763Server version: 5.5.35-0ubuntu0.12.04.2-log (Ubuntu)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \s--------------mysql Ver 14.14 Distrib 5.5.37, for debian-linux-gnu (x86_64) using readline 6.2Connection id: 763Current database:
Current user: rep@192.168.200.212SSL: Cipher in use is DHE-RSA-AES256-SHACurrent pager: stdout
Using outfile: ''Using delimiter: ;
Server version: 5.5.35-0ubuntu0.12.04.2-log (Ubuntu)
Protocol version: 10Connection: 192.168.200.245 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306Uptime: 22 min 52 sec
Threads: 3 Questions: 2325 Slow queries: 1 Opens: 7483 Flush tables: 1 Open tables: 100 Queries per second avg: 1.694
>create table tmp_1229(id int,name varchar(100))default charset utf8;>insert into tmp_1229 values(1,'a'),(2,'b'),(3,'c');>select * from tmp_1229;+------+------+| id | name |+------+------+| 1 | a || 2 | b || 3 | c |+------+------+
以上同步成功。 总结:
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。复制默认是明文进行传输的,通过SSL加密可以大大提高数据的安全性。在上面的过程中,遇到一些问题:
1:openssl版本问题引起的证书不可用,文中已经说明解决办法。
2:MariaDB 证书的不可用,原因是生成服务端客户端证书的时候输入一致导致的,文中也说明了解决办法。
3:要是配置有问题,在用SSL登陆的时候,可以发现错误信息,可以直接定位到哪里出问题。
ssl登陆:
mysql
4:在配置MariaDB的时候,在生成证书的时候可以直接先验证,查看是否有问题。
验证:
openssl verify CAfile etcmysqlcacert.pem etcmysqlservercert.pem etcmysqlclientcert.pem
/etc/mysql/server-cert.pem: OK
/etc/mysql/client-cert.pem: OK
5:要是openssl版本没有问题,不需要再次通过openssl rsa 再次生成,具体的安装配置方法参照本文章即可。 更新(2016.3.19):
今天做了MySQL5.7的SSL复制,5.7安装的时候就已经在数据目录下面生成了上面的这些pem文件,所以直接把client的pem复制到从上去就可以了(注意复制过去之后修改权限,属主改成mysql即可)。否则报错:
Failed to set up SSL because of the following SSL library error: Unable to get certificate ... server-cert.pemFailed to set up SSL because of the following SSL library error: Unable to get private key ... server-cert.pem 更多信息:
https://blog.marceloaltmann.com/en-mysql-replication-with-ssl-pt-replicacao-em-mysql-com-ssl/
http://www.zhengdazhi.com/?p=856
http://dev.mysql.com/doc/refman/5.5/en/replication-solutions-ssl.html
https://dev.mysql.com/doc/refman/5.7/en/replication-solutions-secure-connections.html