Отслеживание MySQL Queries с mysqlsniffer на Ubuntu

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

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

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

sudo apt-get установить 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> сервер: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622> сервер: COM_QUERY: SET SESSION sql_mode = ”
192.168.73.1.2622> сервер: COM_QUERY: SET NAMES utf8
192.168.73.1.1636> сервер: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636> сервер: COM_QUERY: ПОКАЗАТЬ ПОЛНЫЕ КОЛОННЫ ИЗ `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 (идентификатор и длина пакета)
–state Показать состояние
– v40 Сервер MySQL версии 4.0
–dump Дампить все пакеты в шестнадцатеричном виде
–help Распечатать

Оригинальный исходный код и дополнительную информацию можно найти по адресу:
http://hackmysql.com/mysqlsniffer.

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

Оцените статью
TutoryBird.Ru
Добавить комментарий