Sledujte MySQL dotazy s mysqlsniffer na Ubuntu
Máte produkční databázový server a nemůžete povolit protokolování dotazů ... takže jak vidíte dotazy, které se provádějí proti databázi?
Odpověď: použijte modifikovaný síťový sniffer k rozboru paketů MySQL a jejich dekódování. Budete muset udělat trochu kompilace, ale bude to stát za to. Všimněte si, že to obvykle nebude fungovat pro místní připojení, ačkoli jste vítáni.
Nejprve je třeba nainstalovat libpcap-dev, což je vývojová knihovna, která umožňuje aplikacím sniffovat síťové pakety.
sudo apt-get nainstalovat libpcap-dev
Nyní vytvoříme adresář, stáhněte zdrojový kód a zkompilujte jej
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
V tomto okamžiku máme v našem zdrojovém adresáři nový lesklý spustitelný soubor mysqlsniffer. Můžete jej zkopírovat kdekoli se vám líbí (někde v cestě by bylo užitečné)
Chcete-li spustit službu mysqlsniffer, musíte specifikovat síťové rozhraní, které služba MySQL naslouchá. Pro mě je to eth0.
sudo / cesta / do / mysqlsniffer eth0
Zatížení věci začíná létat ... necháme to trochu vyfiltrovat, abychom mohli dostat dotazy a ne všechny nadbytečné údaje.
$ sudo / cesta / do / mysqlsniffer -no-mysql-hdrs eth0 | grep COM_QUERY
192.168.73.1.2622> server: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622> server: COM_QUERY: SET SESSION sql_mode = "
192.168.73.1.2622> server: COM_QUERY: SET NAMES utf8
192.168.73.1.1636> server: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636> server: COM_QUERY: ZVEŘEJNĚTE plné sloupce z 'db2842_howto'. 'Wp_users'
Ah, teď jsme ... všechny druhy informací, bez nutnosti restartovat MySQL.
Zde jsou plné možnosti příkazu:
Použití: mysqlsniffer [OPTIONS] INTERFACE
MOŽNOSTI:
-port N Poslech pro MySQL na portu číslo N (výchozí 3306)
-verbose Zobrazit další paketové informace
-tcp-ctrl Zobrazit pakety TCP (SYN, FIN, RST, ACK)
-net-hdrs Zobrazit hlavní hodnoty IP a TCP hlavičky
-no-mysql-hdrs Nezobrazovat záhlaví MySQL (ID a délka paketu)
-state Zobrazit stát
-v40 MySQL server je verze 4.0
-výpis všech balíků v šestnáctce
-help Vytisknout
Původní zdrojový kód a další informace na adrese:
http://hackmysql.com/mysqlsniffer
Pokud běžíte na vývojovém serveru, bylo by snadnější zapnout protokolování dotazů.