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.