Samstag, 25. Februar 2012

Track MySQL query's met mysqlsniffer op Ubuntu

Je hebt een productie-database server, en kunt u niet in staat vragen te loggen ... dus hoe ziet u de query wordt uitgevoerd tegen de database?

Het antwoord: gebruik een aangepast netwerk sniffer te parsen uit de MySQL pakketten en ze decoderen. Je moet een beetje samenstellen van doen, maar het zal de moeite waard. Merk op dat dit niet zal werken doorgaans voor lokale verbindingen, maar u bent van harte welkom om te proberen.

Ten eerste moet je libpcap-dev, dat is de ontwikkeling library die het mogelijk maakt een applicatie te ruiken netwerkpakketten te installeren.

sudo apt-get install libpcap-dev

Nu laten we een directory, download de broncode en compileren

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

Op dit punt hebben we een glanzende nieuwe executable met de naam mysqlsniffer in onze bron directory. U kunt kopiëren waar je maar wilt (ergens in de weg zou nuttig zijn)

Voor het uitvoeren van mysqlsniffer, moet je de netwerk interface te geven dat MySQL is luistert. Voor mij is het eth0.

sudo / pad / naar / mysqlsniffer eth0

Loads of stuff begint vliegen door ... Laten we het filter het een beetje meer, zodat we kunnen gewoon de vragen en niet alle overtollige data.

$ Sudo / pad / naar / 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 utf8 NAMEN
192.168.73.1.1636> server: COM_QUERY: SELECT @ @ SQL_MODE
192.168.73.1.1636> server: COM_QUERY:. SHOW FULL COLUMNS FROM `db2842_howto` `wp_users`

Ah, nu daar zijn we dan ... allerlei informatie opvragen, zonder dat MySQL herstarten.

Hier zijn de volledige opties voor het commando:

Gebruik: mysqlsniffer [OPTIES] INTERFACE

OPTIONS:
N-port Luister naar MySQL op poort nummer N (standaard 3306)
-Verbose Toon extra pakket informatie
-Tcp-ctrl Toon TCP controle pakketten (SYN, FIN, RST, ACK)
-Net-hdrs Toon grote IP-en TCP-header waarden
-No-mysql-hdrs niet tonen MySQL header (packet-ID en lengte)
-State Show staat
-V40 MySQL server is versie 4.0
-Dump Dump alle pakketten in hex
-Help Print deze

Originele broncode en meer informatie op:
http://goo.gl/eWzrN

Als u werkt op een ontwikkeling server, dan zou het makkelijker zijn om gewoon te zetten vraag te loggen.

Keine Kommentare:

Kommentar veröffentlichen