Spåra MySQL-frågor med mysqlsniffer på Ubuntu
Du har en databassserver för produktion, och du kan inte aktivera sökloggning ... så hur ser du frågorna som körs mot databasen?
Svaret: Använd ett modifierat nätverkssniffer för att parsa ut MySQL-paketen och avkoda dem. Du måste göra lite kompilering, men det kommer att vara värt det. Observera att det inte brukar fungera för lokala anslutningar, men du är välkommen att försöka.
Först måste du installera libpcap-dev, vilket är utvecklingsbiblioteket som tillåter en applikation att snyta nätverkspaket.
sudo apt-get installera libpcap-dev
Låt oss nu göra en katalog, ladda ner källkoden och kompilera den
mkdir mysqlsniffer
cd mysqlsniffer
wget hackmysql.com/code/mysqlsniffer.tgz
tjära xvfz mysqlsniffer.tgz
gcc-O2-lpcap -o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c
Vid denna tidpunkt har vi en glänsande ny körbar heter mysqlsniffer i vår källkatalog. Du kan kopiera det var du vill (någonstans i vägen skulle vara användbar)
För att köra mysqlsniffer måste du ange det nätverksgränssnitt som MySQL lyssnar på. För mig är det et0.
sudo / väg / till / mysqlsniffer eth0
Massor av saker börjar flyga med ... låt oss filtrera ut lite mer så att vi bara kan få frågorna och inte alla överflödiga data.
$ sudo / sökväg / till / 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: Visa fullständiga kolumner från 'db2842_howto'. 'Wp_users'
Åh, nu är vi ... alla slags frågeinformation, utan att behöva starta om MySQL.
Här är de fullständiga alternativen för kommandot:
Användning: mysqlsniffer [OPTIONS] INTERFACE
ALTERNATIV:
-port N Lyssna på MySQL på portnummer N (standard 3306)
-verbose Visa extra paketinformation
-tcp-ctrl Visa TCP-kontrollpaket (SYN, FIN, RST, ACK)
-net-hdrs Visa stora IP- och TCP-huvudvärden
-no-mysql-hdrs Visa inte MySQL-rubrik (paketets ID och längd)
-state Show state
-v40 MySQL-servern är version 4.0
-dump Dump alla paket i hex
-hjälp Skriv ut detta
Original källkod och mer information på:
http://hackmysql.com/mysqlsniffer
Om du kör på en utvecklingsserver skulle det vara lättare att bara aktivera frågehantering.