Домашняя » как » Отслеживание MySQL Queries с mysqlsniffer на Ubuntu

    Отслеживание 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 [ОПЦИИ] ИНТЕРФЕЙС

    ОПЦИИ:
    -порт N Слушайте MySQL на номер порта N (по умолчанию 3306)
    -verbose Показать дополнительную информацию о пакете
    -tcp-ctrl Показать контрольные пакеты TCP (SYN, FIN, RST, ACK)
    -net-hdrs Показать основные значения заголовков IP и TCP
    -no-mysql-hdrs Не показывать заголовок MySQL (идентификатор пакета и длину)
    -состояние Показать состояние
    -Сервер MySQL v40 версии 4.0
    -dump Дамп все пакеты в шестнадцатеричном виде
    -помочь Распечатать это

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

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