Отслеживайте запросы MySQL с помощью mysqlsniffer на Ubuntu

Отслеживайте запросы MySQL с помощью mysqlsniffer на Ubuntu
Отслеживайте запросы MySQL с помощью mysqlsniffer на Ubuntu

Видео: Отслеживайте запросы MySQL с помощью mysqlsniffer на Ubuntu

Видео: Отслеживайте запросы MySQL с помощью mysqlsniffer на Ubuntu
Видео: Электросхеми Базы Данных для Автоэлектрика Диагноста - YouTube 2024, Апрель
Anonim

У вас есть сервер производственной базы данных, и вы не можете включить ведение журнала запросов … так как вы видите, что запросы выполняются в базе данных?

Ответ: используйте модифицированный сетевой сниффер для анализа пакетов MySQL и декодирования их. Вам нужно будет немного скомпилировать, но это того стоит. Обратите внимание, что это обычно не работает для локальных подключений, хотя вы можете попробовать.

Во-первых, вам нужно установить libpcap-dev, который является библиотекой разработки, которая позволяет приложению обманывать сетевые пакеты.

sudo apt-get install libpcap-dev

Теперь давайте создадим каталог, загрузим исходный код и скомпилируем его

mkdir mysqlsniffer

cd mysqlsniffer

wget hackmysql.com/code/mysqlsniffer.tgz

tar xvfz mysqlsniffer.tgz

gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c

На данный момент у нас есть блестящий новый исполняемый файл с именем mysqlsniffer в нашем исходном каталоге. Вы можете копировать его везде, где захотите (где-то в пути было бы полезно)

Чтобы запустить mysqlsniffer, вам нужно указать сетевой интерфейс, который слушает MySQL. Для меня это eth0.

sudo /path/to/mysqlsniffer eth0

Нагрузки материала начинают летать … давайте отфильтруем его немного больше, чтобы мы могли просто получить запросы, а не все лишние данные.

$ sudo /path/to/mysqlsniffer –no-mysql-hdrs eth0 | grep COM_QUERY

192.168.73.1.2622 > server: COM_QUERY: SELECT @@sql_mode 192.168.73.1.2622 > server: COM_QUERY: SET SESSION sql_mode=” 192.168.73.1.2622 > server: COM_QUERY: SET NAMES utf8 192.168.73.1.1636 > server: COM_QUERY: SELECT @@SQL_MODE 192.168.73.1.1636 > server: COM_QUERY: SHOW FULL COLUMNS FROM `db2842_howto`.`wp_users`

Ах, теперь мы … все виды информации запроса, без необходимости перезапускать MySQL.

Ниже приведены полные параметры команды:

Использование: mysqlsniffer [ОПЦИИ] ИНТЕРФЕЙС

ОПЦИИ: -Port N Слушать MySQL по номеру порта N (по умолчанию 3306) -Verbose Показать дополнительную информацию о пакете -Tcp-ctrl Показать пакеты управления TCP (SYN, FIN, RST, ACK) -Net-hdrs Показать основные значения заголовков IP и TCP -No-mysql-hdrs Не показывать заголовок MySQL (идентификатор пакета и длину) Показать состояние -V40 Сервер MySQL - это версия 4.0 -Dump Дамп всех пакетов в шестнадцатеричном формате -Help Распечатать это

Исходный код и дополнительная информация: https://hackmysql.com/mysqlsniffer

Если вы работаете на сервере разработки, было бы проще просто включить ведение журнала запросов.

Рекомендуемые: