Početna » kako da » Pratite MySQL upite s mysqlsniffer na Ubuntu

    Pratite MySQL upite s mysqlsniffer na Ubuntu

    Imate poslužitelj za produkcijsku bazu podataka i ne možete omogućiti zapisivanje upita ... pa kako vidite upite koji se izvršavaju u odnosu na bazu podataka?

    Odgovor: Koristite modificirani mrežni snifer za analizu MySQL paketa i njihovo dekodiranje. Morat ćete malo kompajlirati, ali to će se isplatiti. Imajte na umu da to obično neće raditi za lokalne veze, iako ste dobrodošli.

    Prvo, trebate instalirati libpcap-dev, koji je razvojna knjižnica koja omogućuje aplikaciji sniff mrežne pakete.

    sudo apt-get install libpcap-dev

    Sada napravimo direktorij, preuzmemo izvorni kod i prevedemo ga

    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

    U ovom trenutku imamo sjajnu novu izvršnu datoteku pod nazivom mysqlsniffer u našem izvornom direktoriju. Možete ga kopirati gdje god želite (negdje na putu bilo bi korisno)

    Da biste pokrenuli mysqlsniffer, morate navesti mrežno sučelje na kojem MySQL sluša. Za mene, to je eth0.

    sudo / put / u / mysqlsniffer eth0

    Puno stvari počinje letjeti ... filtrirajmo ga malo više kako bismo mogli dobiti upite, a ne sve prekomjerne podatke.

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

    192.168.73.1.2622> poslužitelj: COM_QUERY: SELECT @@ sql_mode
    192.168.73.1.2622> poslužitelj: COM_QUERY: SET SESSION sql_mode = "
    192.168.73.1.2622> poslužitelj: COM_QUERY: SET NAMES utf8
    192.168.73.1.1636> poslužitelj: COM_QUERY: SELECT @@ SQL_MODE
    192.168.73.1.1636> poslužitelj: COM_QUERY: POKAŽI PUNI STUPOVI IZ 'db2842_howto'. 'Wp_users'

    Ah, sada smo tu ... sve vrste informacija o upitima, bez potrebe za ponovnim pokretanjem MySQL-a.

    Slijedi puna opcija za naredbu:

    Upotreba: mysqlsniffer [OPCIJE] INTERFACE

    OPCIJE:
    -port N Slušajte MySQL na broju porta N (zadano 3306)
    -verbose Prikaz dodatnih informacija o paketu
    -tcp-ctrl Prikaži TCP kontrolne pakete (SYN, FIN, RST, ACK)
    -net-hdrs Prikaži glavne vrijednosti IP i TCP zaglavlja
    -no-mysql-hdrs Ne prikazuje MySQL zaglavlje (ID paketa i duljina)
    -stanje Prikaži stanje
    -v40 MySQL poslužitelj je verzija 4.0
    -dump Ispustite sve pakete u hex
    -help Ispišite ovo

    Izvorni izvorni kôd i više informacija na:
    http://hackmysql.com/mysqlsniffer

    Ako radite na razvojnom poslužitelju, bilo bi lakše uključiti zapisivanje upita.