Проследяване на MySQL заявки с mysqlsniffer на Ubuntu
Имате сървър за производствена база данни и не можете да активирате регистрирането на заявки… така че как виждате заявките да се изпълняват срещу базата данни?
Отговорът: използвайте модифициран мрежов sniffer, за да разберете пакетите 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 / към / mysqlsniffer eth0
Много неща започват да летят с… нека филтрираме малко повече, за да можем да получим запитвания, а не всички излишни данни.
$ sudo / path / към / 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 (идентификатор на пакета и дължина)
-състояние показва състояние
-v40 MySQL сървърът е версия 4.0
-dump Изхвърлете всички пакети в hex
-help Отпечатай това
Оригинален изходен код и повече информация на адрес:
http://hackmysql.com/mysqlsniffer
Ако работите на сървър за разработка, ще бъде по-лесно просто да включите регистрирането на заявки.