Allgemeines Abfrageprotokoll aktivieren und überprüfen
Das allgemeine Abfrageprotokoll (general query log) zeichnet jede von Clients empfangene SQL-Anweisung auf. Es ist ein unschätzbares Werkzeug für Debugging und Auditing, sollte aber nur temporär verwendet werden, da es die Leistung beeinträchtigen und erheblichen Speicherplatz beanspruchen kann. In diesem Schritt aktivieren Sie das Protokoll, generieren einige Aktivitäten und überprüfen die Protokolldatei.
Öffnen Sie zunächst das Terminal auf Ihrem Desktop.
Verbinden Sie sich als Benutzer root mit dem MySQL-Server. In dieser Laborumgebung können Sie sudo verwenden, um sich ohne Passwort zu verbinden.
sudo mysql -u root
Sobald Sie die Eingabeaufforderung mysql> sehen, aktivieren Sie das allgemeine Abfrageprotokoll global.
SET GLOBAL general_log = 'ON';
Standardmäßig wird die Protokolldatei im MySQL-Datenverzeichnis gespeichert. Für einen einfacheren Zugriff ändern wir den Speicherort in das Verzeichnis /tmp.
SET GLOBAL general_log_file = '/tmp/mysql_general.log';
Sie können den neuen Speicherort überprüfen, indem Sie Folgendes ausführen:
SHOW VARIABLES LIKE 'general_log_file';
Die Ausgabe sollte den gerade festgelegten Pfad bestätigen.
+------------------+-------------------------+
| Variable_name | Value |
+------------------+-------------------------+
| general_log_file | /tmp/mysql_general.log |
+------------------+-------------------------+
1 row in set (0.01 sec)
Führen Sie nun einige Befehle aus, um Protokolleinträge zu generieren.
CREATE DATABASE IF NOT EXISTS testdb;
USE testdb;
SELECT 'Logging this query' AS message;
Nachdem Sie diese Befehle ausgeführt haben, beenden Sie die MySQL-Shell.
exit
Zurück in Ihrem Terminal zeigen Sie den Inhalt der Protokolldatei an.
sudo cat /tmp/mysql_general.log
Sie sehen die von Ihnen ausgeführten Befehle zusammen mit Verbindungsinformationen und Zeitstempeln. Dies bestätigt, dass das allgemeine Abfrageprotokoll korrekt funktioniert.
/usr/sbin/mariadbd, Version: 10.6.18-MariaDB-0ubuntu0.22.04.1 (Ubuntu 22.04). started with:
Tcp port: 3306 Unix socket: /run/mysqld/mysqld.sock
Time Id Command Argument
250728 14:12:46 33 Query SHOW VARIABLES LIKE 'general_log_file'
250728 14:12:50 33 Query CREATE DATABASE IF NOT EXISTS testdb
33 Query SELECT DATABASE()
33 Init DB testdb
33 Query show databases
33 Query show tables
33 Query SELECT 'Logging this query' AS message
250728 14:12:56 33 Quit
Schließlich ist es eine gute Praxis, das Protokoll zu deaktivieren, wenn Sie fertig sind. Sie können dies direkt vom Terminal aus tun.
sudo mysql -u root -e "SET GLOBAL general_log = 'OFF';"
Dadurch wird sichergestellt, dass das Protokoll nicht weiter wächst und die Serverleistung beeinträchtigt.