Máte výrobný databázový server a nemôžete povoliť zapisovanie dotazov … tak, ako vidíte dopyty, ktoré sa vykonávajú proti databáze?
Odpoveď: použite upravený 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, hoci ste ochotní vyskúšať.
Najprv 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 install 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 sa vám páči (niekde v ceste by bolo užitočné)
Ak chcete spustiť program mysqlsniffer, musíte špecifikovať sieťové rozhranie, na ktoré program MySQL počúva. Pre mňa je to všetko.
sudo /path/to/mysqlsniffer eth0
Veľa vecí začne lietať … poďme to trochu viac odfiltrovať, aby sme mohli dostať len otázky a nie všetky prebytočné dáta.
$ sudo /path/to/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: SHOW FULL COLUMNS FROM `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 Zobrazenie stavu -V40 MySQL server je verzia 4.0 -Dump Odbaliť všetky pakety v šestnástku -Help Vytlačiť
Pôvodný zdrojový kód a ďalšie informácie na adrese: https://hackmysql.com/mysqlsniffer
Ak používate vývojový server, bolo by jednoduchšie jednoducho zapnúť zaznamenávanie dotazov.