28Jun

Spåra MySQL-frågor med mysqlsniffer på Ubuntu

click fraud protection

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 här vanligtvis inte fungerar 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

Nu låt oss skapa en katalog, ladda ner källkoden och kompilera den

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

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)

instagram viewer

För att kunna köra mysqlsniffer måste du ange det nätverksgränssnitt som MySQL lyssnar på.För mig är det et0.

sudo /path/to/ mysqlsniffer eth0

Massor av saker börjar flyga genom. .. låt oss filtrera ut lite mer så att vi bara kan få frågorna och inte alla överflödiga data.

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

192.168.73.1.2622 & gt;server: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622 & gt;server: COM_QUERY: SET SESSION sql_mode = "
192.168.73.1.2622 & gt;server: COM_QUERY: SET NAMES utf8
192.168.73.1.1636 & gt;server: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636 & gt;server: COM_QUERY: Visa fullständiga kolumner från `db2842_howto`.`wp_users`

Åh, nu finns 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

OPTIONS:
-port N Lyssna på MySQL på portnummer N( standard 3306)
-verbose Visa extra paketinformation
-tcp-ctrl Visa TCPkontrollpaket( SYN, FIN, RST, ACK)
-net-hdrs Visa större IP- och TCP-huvudvärden
-no-mysql-hdrs Visa inte MySQL-huvudet( paketets ID och längd)
-state Visa status
-v40 MySQLservern är version 4.0
-dump Dump alla paket i hex
-help Skriv ut denna

Ursprungliga källkod och mer information på:
http: //hackmysql.com/ mysqlsniffer

Om du kör på en utvecklingsserver kan det vara lättare att bara aktivera frågaskogsavverkning.