Domača » kako » Spremljajte MySQL poizvedbe z mysqlsniffer na Ubuntu

    Spremljajte MySQL poizvedbe z mysqlsniffer na Ubuntu

    Imate strežnik za produkcijsko bazo podatkov in ne morete omogočiti beleženja poizvedb… tako, kako vidite poizvedbe, ki se izvajajo proti bazi podatkov?

    Odgovor: uporabite spremenjen sniffer omrežja, da razčlenite pakete MySQL in jih dekodirate. Malo boste morali narediti, vendar bo vredno. Upoštevajte, da to običajno ne deluje za lokalne povezave, čeprav ste dobrodošli, da poskusite.

    Najprej morate namestiti libpcap-dev, ki je razvojna knjižnica, ki aplikaciji dovoljuje sniff omrežnih paketov.

    sudo apt-get install libpcap-dev

    Sedaj naredimo imenik, prenesemo izvorno kodo in jo prevedemo

    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

    Na tej točki imamo v našem izvornem imeniku novo, izvrstno datoteko mysqlsniffer. Lahko ga kopirate kjerkoli želite (nekje na poti bi bilo koristno)

    Če želite zagnati mysqlsniffer, morate podati omrežni vmesnik, ki ga MySQL posluša. Zame je eth0.

    sudo / pot / do / mysqlsniffer eth0

    Veliko stvari se začne poleteti… počakajmo malo bolj, da lahko dobimo poizvedbe in ne vseh presežnih podatkov.

    $ sudo / path / v / mysqlsniffer -no-mysql-hdrs eth0 | grep COM_QUERY

    192.168.73.1.2622> strežnik: COM_QUERY: SELECT @@ sql_mode
    192.168.73.1.2622> strežnik: COM_QUERY: SET SESSION sql_mode = "
    192.168.73.1.2622> strežnik: COM_QUERY: SET NAMES utf8
    192.168.73.1.1636> strežnik: COM_QUERY: SELECT @@ SQL_MODE
    192.168.73.1.1636> strežnik: COM_QUERY: POKAŽI POLNO STOLPCI IZ 'db2842_howto'. 'Wp_users'

    Ah, zdaj smo tu… vse vrste informacij o poizvedbah, ne da bi morali znova zagnati MySQL.

    Tu so popolne možnosti za ukaz:

    Uporaba: mysqlsniffer [OPCIJE] INTERFACE

    OPCIJE:
    -port N Poslušaj za MySQL na številki vrat N (privzeto 3306)
    -verbose Pokaži dodatne informacije o paketu
    -tcp-ctrl Prikaži nadzorne pakete TCP (SYN, FIN, RST, ACK)
    -net-hdrs Prikaži glavne vrednosti IP in TCP
    -no-mysql-hdrs Ne prikaže glave MySQL (ID paketa in dolžina)
    -stanje Prikaži stanje
    -v40 MySQL strežnik je različica 4.0
    -dump Odložite vse pakete v hex
    -help Natisni to

    Izvirna izvorna koda in več informacij na:
    http://hackmysql.com/mysqlsniffer

    Če uporabljate razvojni strežnik, bi bilo lažje samo vklopiti beleženje poizvedb.