Відстежуйте запити MySQL за допомогою mysqlsniffer на Ubuntu
У вас є виробничий сервер бази даних, і ви не можете ввімкнути реєстрацію запитів ... так як ви бачите, що запити виконуються щодо бази даних?
Відповідь: використовуйте модифікований мережевий сніфер для розбору пакунків 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 -не-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: 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 Друк цього
Оригінальний вихідний код та додаткову інформацію за адресою:
http://hackmysql.com/mysqlsniffer
Якщо ви працюєте на сервері розробки, було б простіше увімкнути реєстрацію запитів.