Домашня » як » Відстежуйте запити MySQL за допомогою mysqlsniffer на Ubuntu

    Відстежуйте запити 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

    Якщо ви працюєте на сервері розробки, було б простіше увімкнути реєстрацію запитів.