Начална » как да » Проследяване на MySQL заявки с mysqlsniffer на Ubuntu

    Проследяване на 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

    Ако работите на сървър за разработка, ще бъде по-лесно просто да включите регистрирането на заявки.