Verfolgen Sie MySQL-Abfragen mit mysqlsniffer unter Ubuntu

Video: Verfolgen Sie MySQL-Abfragen mit mysqlsniffer unter Ubuntu

Video: Verfolgen Sie MySQL-Abfragen mit mysqlsniffer unter Ubuntu
Video: 2x so schnell Tippen in 1 Woche (471 apm) | Selbstexperiment 2023, Dezember
Verfolgen Sie MySQL-Abfragen mit mysqlsniffer unter Ubuntu
Verfolgen Sie MySQL-Abfragen mit mysqlsniffer unter Ubuntu
Anonim

Sie haben einen Produktionsdatenbankserver und 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. Sie müssen ein wenig kompilieren, aber es lohnt sich. Beachten Sie, dass dies normalerweise nicht für lokale Verbindungen funktioniert, obwohl Sie dies gerne tun können.

Zunächst müssen Sie libpcap-dev installieren. Hierbei handelt es sich um die Entwicklungsbibliothek, mit der eine Anwendung Netzwerkpakete ausspähen kann.

sudo apt-get install libpcap-dev

Nun machen wir ein Verzeichnis, laden den Quellcode herunter und kompilieren ihn

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

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

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

sudo /path/to/mysqlsniffer eth0

Jede Menge Zeug fliegt vorbei… lassen Sie uns etwas mehr herausfiltern, sodass wir nur die Abfragen und nicht alle überzähligen Daten erhalten.

$ sudo /path/to/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: SHOW FULL COLUMNS FROM `db2842_howto`.`wp_users`

Ah, jetzt sind wir… alle Arten von Abfrageinformationen, ohne MySQL neu starten zu müssen.

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

Verwendung: mysqlsniffer [OPTIONS] INTERFACE

OPTIONEN: –Port N Hören Sie auf MySQL an Portnummer N (Standard 3306). –Verbose Zeigt zusätzliche Paketinformationen an –Tcp-ctrl TCP-Steuerpakete anzeigen (SYN, FIN, RST, ACK) –Net-hdrs Zeigt die wichtigsten IP- und TCP-Header-Werte an –No-mysql-hdrs MySQL-Header nicht anzeigen (Paket-ID und Länge) –State Status anzeigen –V40 MySQL-Server ist Version 4.0 –Dump Dump alle Pakete in Hex –Hilfe Drucken Sie diese

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

Wenn Sie auf einem Entwicklungsserver laufen, ist es einfacher, die Abfrageprotokollierung zu aktivieren.

Empfohlen: