Skip to main content

Traccia MySQL Queries con mysqlsniffer su Ubuntu

Traccia MySQL Queries con mysqlsniffer su Ubuntu

Geoffrey Carr

Hai un server database di produzione e non puoi abilitare la registrazione delle query ... quindi come vedi le query eseguite sul database?

La risposta: utilizzare uno sniffer di rete modificato per analizzare i pacchetti MySQL e decodificarli. Dovrai fare una piccola compilazione, ma ne varrà la pena. Nota che questo di solito non funziona con le connessioni locali, anche se sei invitato a provare.

Innanzitutto, è necessario installare libpcap-dev, che è la libreria di sviluppo che consente a un'applicazione di sniffare i pacchetti di rete.

sudo apt-get install libpcap-dev

Ora facciamo una directory, scarichiamo il codice sorgente e lo compiliamo

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

A questo punto, abbiamo un nuovo eseguibile lucido chiamato mysqlsniffer nella nostra directory dei sorgenti. Puoi copiarlo dove vuoi (da qualche parte nel percorso sarebbe utile)

Per eseguire mysqlsniffer, è necessario specificare l'interfaccia di rete su cui è in ascolto MySQL. Per me, è eth0.

sudo /path/to/mysqlsniffer eth0

Un sacco di cose inizia a volare ... filtriamo un po 'di più in modo che possiamo ottenere solo le query e non tutti i dati in eccesso.

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

192.168.73.1.2622 > server: COM_QUERY: SELECT @@sql_mode192.168.73.1.2622 > server: COM_QUERY: SET SESSION sql_mode=”192.168.73.1.2622 > server: COM_QUERY: SET NAMES utf8192.168.73.1.1636 > server: COM_QUERY: SELECT @@SQL_MODE192.168.73.1.1636 > server: COM_QUERY: SHOW FULL COLUMNS FROM `db2842_howto`.`wp_users`

Ah, ora ci siamo ... tutti i tipi di informazioni di query, senza dover riavviare MySQL.

Ecco le opzioni complete per il comando:

Utilizzo: mysqlsniffer [OPZIONI] INTERFACCIA

OPZIONI:-Port N Ascolta MySQL sul numero di porta N (predefinito 3306)-Verbose Mostra informazioni extra sui pacchetti-Tcp-ctrl Mostra pacchetti di controllo TCP (SYN, FIN, RST, ACK)-Net-hdrs Mostra i principali valori di intestazione IP e TCP-No-mysql-hdrs Non mostra l'intestazione di MySQL (ID pacchetto e lunghezza)-Stato Mostra stato-V40 Il server MySQL è la versione 4.0-Dump Scarica tutti i pacchetti in hex-Help Stampa questo

Codice sorgente originale e ulteriori informazioni su:http://hackmysql.com/mysqlsniffer

Se si esegue un server di sviluppo, sarebbe più semplice attivare la registrazione delle query.

Link
Plus
Send
Send
Pin