实现MYSQL8.3.0 版本流量抓取
根据测试需求,需要抓取MYSQL8.3.0流量包,使用wireshark +数据库客户端实现
安装数据库服务端
这里就不给详细操作方法, 网上教程一大堆,小编这里是最新的MYSQL 8.3.0版本
安装成功后,创建库和表
客户端链接数据库
这里就不细说了,正常通过客户端 填写IP 账号 密码 就完成了,不要配置SSL 或者SSH 链接
流量抓取
使用wireshark 监听 port :3306 端口,MYSQL 默认的端口
结果发现 被SSL加密了, 这里就发现,客户端链接并没有使用SSL证书链接,啥问题?
问题排查
进过小编发现,MYSQL 8.X 版本,新出的版本服务端默认SSL加密,并且默认不需要客户端使用SSL链接;
爬坑
服务端
找到你部署MYSQL 的配置文件,Centos 应该是 my.cnf 这个文件;如果找不到,可以用全局搜索一下 “mysql --help|grep ‘my.cnf’”
虽然回显三个,默认情况下 逐级获取,小编这里就在/etc/my.cnf
在[mysqld]部分添加或修改以下设置:
[mysqld]
skip-ssl
保存文件并重启MySQL服务器以使更改生效。
上述服务端修改完成后,客户端重新链接就会出现失败,客户端也需要进行修改链接
客户端
客户端报错 :[08001] Public Key Retrieval is not allowed.
解决:使用MySQL Connector/J的情况,您可以在连接字符串中添加allowPublicKeyRetrieval=true来解决这个问题
jdbc:mysql://服务器地址/数据库名?user=用户名&password=密码&useSSL=false&allowPublicKeyRetrieval=true
这里的useSSL=false确保SSL被禁用,而allowPublicKeyRetrieval=true允许客户端在不使用SSL的情况下安全地检索服务器的公钥。
以上服务端和客户端都修改完成后,再次抓取数据库流量就可以正常解析了