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.