Отслеживание 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
Если вы работаете на сервере разработки, было бы проще просто включить ведение журнала запросов..