MySQL 5.7 的SSL加密方法


 


1、停止msyql


/etc/init.d/mysql stop


 


2、查看数据库的位置查看datadir的位置


cat /etc/my.cnf


 


3、安装证书


/usr/bin/mysql_ssl_rsa_setup --datadir=/var/lib/mysql


 


4、修改权限


chown -R mysql:mysql /var/lib/mysql/*.pem


 


5、修改/etc/my.cnf 在 [mysqld] 下面添加


 


ssl-ca = /var/lib/mysql/ca.pem


ssl-cert = /var/lib/mysql/server-cert.pem


ssl-key = /var/lib/mysql/server-key.pem


 


6、启动 mysql


/etc/init.d/mysql start


 


7、登录mysql


mysql -uroot -p


 


8、查看ssl参数状态,查看have_ssl,为YES,这表示已经开始支持SSL了


show global variables like '%ssl%';


 


 Mysql-开启 SSL加密 mysql_ssl_rsa_setup_客户端

 


9、查看SSL的加密方式


show global variables like 'tls_version';


 


 Mysql-开启 SSL加密 mysql_ssl_rsa_setup_数据_02

 


 


10、配置SSL用户


 


a、取消ssl验证


CREATE USER 'yang0001'@'%' IDENTIFIED BY 'afdsa0897091';


grant all privileges on *.* to yang0001@'%' identified by 'afdsa0897091' require none;


alter user yang0001@'%' require none;


 


b、强制ssl验证,即使设置了强制ssl,在登录时候使用--ssl-mode=disable依然可以避开ssl验证


CREATE USER 'yang0001'@'%' IDENTIFIED BY 'afdsa0897091';


grant all privileges on *.* to yang0001@'%' identified by 'afdsa0897091' require ssl;


alter user abcssl@'%' require ssl;


 


11、查看是否开启强制用户使用SSL


select user,host,ssl_type,ssl_cipher  from mysql.user ;


 


12、连接数据库的时候,带上SSL


 


不指定客户端证书方式


5.6


--ssl、--disable-ssl、--skip-ssl:在mysql5.7是将被废弃的选项,将来版本不再支持,建议使用--ssl-mode选项,


/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl  默认为1


/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl=0


/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl=1  默认为1


/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --disable-ssl


/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --skip-ssl


 


5.7


/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl-mode=disable


/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl-mode=required  默认required


 


从另一台机器连接过去也可以ssl加密,表明不需要安装客户端证书的


/usr/local/mysql/bin/mysql -uroot -p -h10.105.45.133 --ssl-mode=required


 


13、指定客户端证书方式,5.6的方式,5.7也可以用


/usr/local/mysql/bin/mysql --ssl-ca=/data/mysql/mysql3306/data/ca.pem \


--ssl-cert=/data/mysql/mysql3306/data/client-cert.pem \


--ssl-key=/data/mysql/mysql3306/data/client-key.pem \


-uroot -p -h127.0.0.1


 


14、接验证连接是否用了ssl


登录数据库后,输入 status


 


 Mysql-开启 SSL加密 mysql_ssl_rsa_setup_客户端_03

 


总结


1、MySQL5.7默认是开启SSL连接,如果强制用户使用SSL连接,那么应用程序的配置也需要明确指定SSL相关参数,否则程序会报错。


2、虽然SSL方式使得安全性提高了,但是相对地使得QPS也降低23%左右。所以要谨慎选择:


      2.1、对于非常敏感核心的数据,或者QPS本来就不高的核心数据,可以采用SSL方式保障数据安全性;


      2.2、对于采用短链接、要求高性能的应用,或者不产生核心敏感数据的应用,性能和可用性才是首要,建议不要采用SSL方式;



​https://www.docs4dev.com/docs/zh/mysql/5.7/reference/x-plugin-encrypted-connections.html​


 


​https://dev.mysql.com/doc/refman/5.7/en/x-plugin-encrypted-connections.html​