使用tshark捕捉本机发出的sql命令

开发使用的是测试服务器 但经常有查看实际执行的sql的需求 如

  1. 查看某一服务端接口涉及到哪些sql操作

  2. 定位问题 测试反映页面查询不到结果 看一下实际的sql中是否包含了什么隐式的查询条件 如is_publish=1

  3. 验证orm框架实际有没发出查询请求, 还是使用了本地的缓存。

  4. 等等

有没工具可以监控本地发出的sql呢? 就像使用Charles等工具可以清楚的查看Http请求和响应一样。搜索了一下还真有这样的工具 如下所示

# 在终端一中执行下面的命令tshark -i en0 -d tcp.port==3306,mysql -T fields -e mysql.query 'port 3306'Capturing on 'Wi-Fi'

另一终端连接测试服务器并执行几条查询命令 可以看到终端一中有对应的sql输出

select version()select now()

美中不足的是会有一些多余的空行输出。 目前还不知有什么办法可以去掉空行。
另外使用上面的命令监控发给本机服务器的query sql失败, 不知是不是版本的原因。 本机使用的是5.7.12。

# 终端一 tshark -i lo -d tcp.port==3306,mysql -T fields -e mysql.query 'port 3306'Capturing on 'Loopback'# 终端二mysql -h127.0.0.1 -u root -pselect version();select now();show databases;# 终端一中除了空行外无任何输出? 是mysql版本原因吗? 本地用的是5.7.12

参考文档

https://www.linuxsysadmintutorials.com/how-to-sniff-mysql-traffic-on-a-database-server.html

关键字:wireshark, mysql, sql, select


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部