不开审计和查询日志,怎么抓取MySQL执行的命令?

科技   2024-10-25 16:40   上海  

我们有时候想抓取到机器的SQL,但是又不想开启审计,就可以借助go-sniffer 来抓取SQL。

工具通过解析TCP数据包获取到执行的SQL。

工具GitHub地址:

https://github.com/40t/go-sniffer


我们就一起来看一下怎样使用。

安装

下载压缩包,传到机器上

wget https://github.com/40t/go-sniffer/archive/refs/heads/master.zipunzip go-sniffer-master.zipmv go-sniffer-master go-sniffer

安装依赖:

yum -y install libpcap-devel go


初始化Go模块:

cd go-sniffergo mod init go-sniffer

下载依赖:

go mod tidy

编译:

go build

抓取MySQL的数据包

执行

./go-sniffer eth0 mysql -p 3306


在另外一个窗口,运行了我们前面写的一篇Go语言操作MySQL中的程序。

结果如下图:

能获取到所有执行的SQL。

小编也试了下,服务端和客户端都能抓取,内容一样。


抓取Redis的数据包

执行:

redis-cli -h 10.254.90.148 -p 9001 -a xxx

其他窗口执行set命令,抓取的结果如下图:

同样也能抓取到所执行的Redis命令。


抓取MongoDB的数据包

执行:

./go-sniffer eth0 mongodb -p 27001


发现只能获取建立连接和断开连接时的数据包:

执行查询命令的时候,抓不到数据包。


使用的MongoDB版本是6.0.10,有没有懂得大佬知道是什么原因。


好的,关于go-sniffer就介绍到这里。


研究技术的小编先退下,卖课的小编上场。

欢迎订购小编在慕课网制作的DBA体系课(详细介绍可以点击跳转)。

课程内容大致比例:

  • MySQL(60%)

  • Redis(10%)

  • Go开发DB平台(10%)

  • Linux基础(5%)

  • Shell(5%)

  • MongoDB(5%)

  • Clickhouse(3%)

  • ES(2%)


昨天,慕课网平台的工作人员跟我说,会在下个月开启双十一折扣活动。从今天开始到双十一活动结束,这期间购买DBA体系课的,都会保价双十一活动。

也就是这期间,你如果买的比双十一活动期间的价格贵了,到时候可以去后台申请退还差价。

课程地址:

https://class.imooc.com/sale/dba


售前售后问题,可以加我微信:mating3306

MySQL数据库联盟
关注后,回复“高可用”,可获取8篇MySQL高可用文章
 最新文章