注册 登录
  • 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

MySQL 5.7新特性:客户端使用加密连接

MySQL 5.7 彭东稳 8258次浏览 已收录 0个评论

有这么一种需求,就是要求处理敏感字段,比如取出的密码或资金数据用***来表示,那么DBA就无法看到这部分的私人数据内容。这本身是一个很不错的安全处理方式,但若DBA在本地装一个类似tcpdump的工具,则依然能够通过获取得到的包得到想要的数据。因此,除了在程序端进行展示的安全处理,还需在MySQL服务器端开启安全的加密通信功能,这时就是SSL发挥功能的时候了。

MySQL 5.7的SSL配置与使用,如果仔细阅读MySQL 5.7的安装文档INSTALL-BINARY,会发现5.7的安装文档在初始化数据目录之后还额外多做了一个操作,这是之前版本所没有的操作,而该步骤即是对于SSL的安装与配置:

运行完命令mysql_ssl_rsa_setup后会发现数据目录下多出了一些以pem结尾的文件,而这些文件就是开启SSL连接所需要的文件:

PS:如果你是yum安装,那么直接执行mysql_ssl_rsa_setup,就会在/var/log/mysql/目录下就会生成这些文件。

若这时启动MySQL数据库并启动应该可以发现如下状态:

该参数表示MySQL服务器开启了SSL功能,而在MySQL 5.7版本下客户端默认就会使用SSL的方式来进行连接(注意:如果使用socket连接的话就无法加密),比如:

通过STATUS的SSL列就能判断连接的用户是否使用了SSL,比如上述例子中的Cipher in use is DHE-RSA-AES256-SHA就表示当前root用户是通过SSL的方式进行连接。若在创建用户时,希望该用户每次必须通过SSL方式,则需在创建用户通过”REQUIRE SSL”来进行设置,对于上述的root用户,可以通过如下方式来进行修改以确保每次通过SSL进行连接,强制不使用SSL进行连接则报错:

或者创建用户时直接指定。

再次登录,但记得连接时关闭SSL连接。

可以看到不允许连接的。

MySQL 5.6同样支持以SSL的方式进行连接,但是操作相对5.7较为复杂,用户需要自己通过openssl命令来创建各类公密钥,具体可以查看相关官方文档。

总结

1)MySQL 5.7配置SSL要比5.6来的简单的多。

2)MySQL 5.7客户端默认开启SSL加密连接。

3)通常来说,开启SSL加密连接后,性能最大的开销在25%左右。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)or分享 (0)
关于作者:

您必须 登录 才能发表评论!