
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: http://hackmysql.com/mysqlsniffer
Wenn Sie auf einem Entwicklungsserver laufen, ist es einfacher, die Abfrageprotokollierung zu aktivieren.