28Jun

Verfolgen Sie MySQL-Anfragen mit mysqlsniffer auf Ubuntu

Sie haben einen Produktionsdatenbankserver, und Sie können die Abfrageprotokollierung nicht aktivieren. .. Wie sehen Sie also, dass die Abfragen für die Datenbank ausgeführt werden?

Die Antwort: Verwenden Sie einen modifizierten Netzwerk-Sniffer, um die MySQL-Pakete zu analysieren und zu dekodieren. Du musst ein wenig kompilieren, aber es wird sich lohnen. Beachten Sie, dass dies normalerweise nicht für lokale Verbindungen funktioniert, obwohl Sie es gerne versuchen.

Zunächst müssen Sie libpcap-dev installieren, die Entwicklungsbibliothek, die es einer Anwendung ermöglicht, Netzwerkpakete zu erkennen.

sudo apt-get installieren libpcap-dev

Jetzt machen wir ein Verzeichnis, laden Sie den Quellcode und kompilieren

mkdir mysqlsniffer

cd mysqlsniffer

wget hackmysql.com /code/ mysqlsniffer.tgz

tarxvfz mysqlsniffer.tgz

gcc -O2 -lpcap-o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c

An dieser Stelle haben wir eine glänzende neue ausführbare Datei namens mysqlsniffer in unserem Quellverzeichnis. Sie können es kopieren, wo Sie möchten( irgendwo im Pfad wäre nützlich)

Um mysqlsniffer auszuführen, müssen Sie die Netzwerkschnittstelle angeben, die MySQL überwacht. Für mich ist es eth0.

sudo

mysqlsniffer eth0

Viele Sachen fangen an zu fliegen. .. lassen Sie uns es ein wenig mehr herausfiltern, damit wir nur die Abfragen und nicht alle überflüssigen Daten bekommen können.

$ 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 NAMEN utf8
192.168.73.1.1636 & gt;Server: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636 & gt;Server: COM_QUERY: SHOW FULL COLUMNS VON `db2842_howto`.wp_users`

Ah, jetzt da sind wir. .. alle Arten von Abfrage-Informationen, ohne MySQL neu starten zu müssen.

Hier sind die vollständigen Optionen für den Befehl:

Verwendung: mysqlsniffer [OPTIONEN] INTERFACE

OPTIONEN:
-port N Achten Sie auf MySQL auf Portnummer N( Standard 3306)
-verbose Zusätzliche Paketinformationen anzeigen
-tcp-ctrl TCP anzeigenKontroll-Pakete( SYN, FIN, RST, ACK)
-net-hdrs Zeigt die wichtigsten IP- und TCP-Header-Werte
-no-mysql-hdrs Zeigt keine MySQL-Header( Paket-ID und Länge)
-status Zeige Zustand
-v40 MySQLServer ist Version 4.0
-dump Dump alle Pakete in hex
-help Drucken Sie diesen

Original Quellcode und weitere Informationen unter:
http: //hackmysql.com/ mysqlsniffer

Wenn Sie auf einem Entwicklungsserver laufen, wäre es einfacher, nur Abfrage zu aktivierenprotokollieren.