Úvodná » ako » Sledovať MySQL dotazy s mysqlsniffer na Ubuntu

    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.