Sledovať MySQL dotazy s mysqlsniffer na Ubuntu
Máte výrobný databázový server a nemôžete povoliť zapisovanie dotazov ... tak, ako vidíte, že dopyty, ktoré sa robia proti databáze?
Odpoveď: použite modifikovaný sieťový sniffer na analýzu paketov MySQL a ich dekódovanie. Budete musieť urobiť trochu kompilácie, ale to bude stáť za to. Upozorňujeme, že to zvyčajne nebude fungovať pri lokálnych pripojeniach, aj keď ste to vítaní vyskúšať.
Po prvé, musíte nainštalovať libpcap-dev, čo je vývojová knižnica, ktorá umožňuje aplikácii očisťovať sieťové pakety.
sudo apt-get nainštalovať libpcap-dev
Teraz urobme adresár, prevezme si zdrojový kód a zostavíme ho
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 momente máme v našom zdrojovom adresári nový lesklý spustiteľný súbor mysqlsniffer. Môžete to skopírovať kdekoľvek (niekde v ceste by bolo užitočné)
Ak chcete spustiť funkciu mysqlsniffer, musíte špecifikovať sieťové rozhranie, na ktoré program MySQL počúva. Pre mňa je to všetko.
sudo / cesta / do / mysqlsniffer eth0
Veľa vecí začína lietať ... poďme to trochu viac odfiltrovať, aby sme mohli dostať len dotazy a nie všetky nadbytoč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: Ukážte plné stĺpce z 'db2842_howto'. 'Wp_users'
Ah, teraz sme ... všetky druhy informácií, bez nutnosti reštartovať MySQL.
Tu sú plné možnosti príkazu:
Použitie: mysqlsniffer [OPTIONS] INTERFACE
MOŽNOSTI:
-port N Počúvajte pre MySQL na porte číslo N (predvolené 3306)
-verbose Zobraziť ďalšie informácie o paketoch
-tcp-ctrl Zobraziť riadiace pakety TCP (SYN, FIN, RST, ACK)
-net-hdrs Zobraziť hlavné hodnoty hlavičky IP a TCP
-no-mysql-hdrs Nezobrazovať hlavičku MySQL (ID a dĺžka paketu)
-stav Zobraziť stav
-v40 MySQL server je verzia 4.0
-výpis Odbaliť všetky pakety v hex
-pomoc Vytlačiť
Pôvodný zdrojový kód a ďalšie informácie na adrese:
http://hackmysql.com/mysqlsniffer
Ak bežíte na vývojovom serveri, bolo by jednoduchšie jednoducho zapnúť zaznamenávanie dotazov.