强制某用户必须使用SSL连接数据库
#修改已存在用户 mysql> ALTER USER 'dba'@'%' REQUIRE SSL; #新建必须使用SSL用户 mysql> grant select on *.* to 'dba'@'%' identified by 'xxx' REQUIRE SSL;#对于上面强制使用ssl连接的用户,如果不是使用ssl连接的就会报错,像下面这样:
[root@001 mysql] mysqll -h 10.126.xxx.xxx -u dba -p --ssl Enter password: ERROR 1045 (28000): Access denied for user 'dba'@'10.126.xxx.xxx' (using password: YES)四、未使用SSL和使用SSL安全性对比
【测试方式】在MySQL服务器端通过tshark抓包的方式来模拟窃取数据。验证、对比未使用SSL和使用SSL两者在安全性上有什么不同?
1.未使用SSL情况:
在客户端机器(10.126.126.161)上连接数据库并进行insert操作,使用--ssl-mode=DISABLED关闭SSL
同时在MySQL服务器端(10.126.126.160)上用tshark进行抓包:
【结论】未使用SSL情况下,在数据库服务器端可以通过抓包的方式获取数据,安全性不高。
2.采用SSL情况:
在客户端机器(10.126.126.161)上连接数据库并进行insert操作,使用--ssl-mode=REQUIRED指定SSL
同时在MySQL服务器端(10.126.126.160)上再次用tshark进行抓包:
【结论】没有抓到该语句,采用SSL加密后,tshark抓不到数据,安全性高。
五、使用SSL前后性能对比(QPS)
服务器配置:CPU:32核心 内存:128G 磁盘:SSD
为了尽量准确测试QPS,采用全内存查询,因为我们线上热点数据基本都在内存中;按照并发线程数分类:1线程、4线程、8线程、16线程、24线程、32线程、64线程;
具体数据如下: