Как прослушать сетевой трафик PostgreSQL? - PullRequest
0 голосов
/ 14 июня 2019

Я хочу посмотреть, что мой сервер баз данных PostgreSQL (postgres) отправляет в ответ на мой клиент (сервер приложений Ruby, использующий гем pg).Сервер и клиент работают локально, и их соединение не зашифровано.

Ответы [ 2 ]

2 голосов
/ 14 июня 2019

Используйте tcpdump для отображения пакетов, отправленных между вашим клиентом и сервером.

Как?Введите следующую команду в Терминале на macOS:

sudo tcpdump -A -i any port 5432

Затем запустите сервер приложений (например, отправив ему запрос скручивания из другого окна Терминала), чтобы отправить команду на postgres.

Наконец, просмотрите выходные данные tcpdump.

Примечание: tcpdump не показывает пакеты, отправленные между psql & postgres, поскольку они обмениваются данными через сокет домена Unix.См .: Могу ли я отслеживать локальный сокет домена Unix, например, tcpdump?

0 голосов
/ 11 июля 2019

Поскольку tcpdump уже упоминалось, я хотел бы перечислить другой инструмент, который можно использовать для этой цели с менее подробным выводом: ngrep

Использование:

ngrep -d lo port 5432

lo - это сетевой интерфейс для прослушивания. Это можно узнать с помощью ifconfig. port 5432 - это pcap фильтр .

Это также может быть использовано для поиска определенных операторов SQL, если целью является захват операторов SQL, представленных вашим приложением. Для подробного объяснения см. здесь .

...