如何嗅探PostgreSQL网络流量?

时间:2019-06-14 01:42:43

标签: postgresql packet-sniffers

我想看看我的PostgreSQL数据库服务器(postgres)正在发送什么来响应我的客户端(一个使用pg gem的Ruby应用程序服务器)。服务器和客户端都在本地运行,并且它们的连接未加密。

2 个答案:

答案 0 :(得分:2)

使用tcpdump显示客户端和服务器之间发送的数据包。

如何?在macOS的终端中输入以下命令:

sudo tcpdump -A -i any port 5432

然后,触发您的应用程序服务器(例如,通过从另一个终端窗口发送一个curl请求),以向postgres发送命令。

最后,查看tcpdump的输出。

注意:tcpdump不显示在psqlpostgres之间发送的数据包,因为它们是通过Unix域套接字通信的。参见:Can I monitor a local unix domain socket like tcpdump?

答案 1 :(得分:0)

由于已经提到tcpdump,所以我想列出另一个可用于此目的的工具,其输出不太冗长:ngrep

用法:

ngrep -d lo port 5432

lo是要收听的网络接口。可以使用ifconfig找到。 port 5432pcap filter

如果目的是捕获应用程序提交的SQL语句,则也可以用于搜索特定的SQL语句。有关详细说明,请参见here