Traccia MySQL Queries con mysqlsniffer su Ubuntu
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 funzionerà per le connessioni locali, anche se puoi 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 / percorso / a / 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 / percorso / a / 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: MOSTRA LE COLONNE COMPLETE DA "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:
Uso: mysqlsniffer [OPZIONI] INTERFACCIA
OPZIONI:
-porta 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-hdr 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
-scarico scaricare tutti i pacchetti in esadecimale
-aiuto 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.