Ich habe gelesen, dass der MySQL-Server eine Protokolldatei erstellt, in der alle Aktivitäten aufgezeichnet werden - beispielsweise wann und welche Abfragen ausgeführt werden.
Kann mir jemand sagen, wo es in meinem System existiert? Wie kann ich es lesen?
Grundsätzlich muss ich die Datenbank mit unterschiedlichen Eingaben sichern [Sicherung zwischen zwei Daten], daher denke ich, dass ich hier eine Protokolldatei verwenden muss. Deshalb möchte ich dies tun ...
Ich denke, dieses Protokoll muss irgendwie gesichert werden, da vertrauliche Informationen wie Benutzernamen und Passwort protokolliert werden können [wenn eine Abfrage dies erfordert]; Kann es also gesichert werden, nicht leicht zu sehen?
Ich habe Root-Zugriff auf das System. Wie kann ich das Protokoll anzeigen?
Wenn ich versuche, /var/log/mysql.log zu öffnen, ist es leer.
Dies ist meine Konfigurationsdatei:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
log = /var/log/mysql/mysql.log
binlog-do-db=zero
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
general_log_file = /var/log/mysql/mysql.log
general_log = 1
/etc/mysql/conf.d/mysqld_safe_syslog.cnf
nur, wenn das Fehlerprotokoll aktiviert werden soll. Diese Antwort, wie sie derzeit geschrieben wird, scheint sie jedoch für jedes Protokoll vorzuschlagen.slow_query_log = 1;
,slow_query_log_file = /var/log/mysql/mysql-slow-query.log
undlong_query_time = 60
unter [mysqld]. Wenn ich versuche, mit Ihrer Konfiguration zu beginnen, startet der Server, aber langsam und mit Fehlern. Ich denke wirklich, dass die Versionen unterschiedlich sind und in späteren Versionen wollte oracle die Variablennamen vereinheitlichen. Auch: IMHO 2 Sekunden ist nicht so lang.Sie müssen die Abfrageprotokollierung in MySQL aktivieren.
edit /etc/my.cnf
Starten Sie den Computer oder den mysqld-Dienst neu
Öffnen Sie phpmyadmin / jede Anwendung, die die MySQL- / MySQL-Konsole verwendet, und führen Sie eine Abfrage aus
cat /tmp/mysql.log
(Sie sollten die Abfrage sehen)quelle
Die MySQL-Protokolle werden durch die globalen Variablen bestimmt, wie z.
log_error
für das Fehlermeldungsprotokoll;general_log_file
für die allgemeine Abfrageprotokolldatei (falls aktiviert durchgeneral_log
);slow_query_log_file
für die Protokolldatei für langsame Abfragen (falls aktiviert vonslow_query_log
);Führen Sie den folgenden Shell-Befehl aus, um die Einstellungen und ihren Speicherort anzuzeigen:
Führen Sie diesen Befehl im Terminal aus, um den Wert des Fehlerprotokolls zu drucken:
Führen Sie Folgendes aus, um den Inhalt der Fehlerprotokolldatei in Echtzeit zu lesen:
Hinweis: Treffer Control- Cwenn Sie fertig sind
Wenn das allgemeine Protokoll aktiviert ist, versuchen Sie:
Fügen Sie zur Verwendung
mysql
mit dem Kennwortzugriff-p
oder-pMYPASS
Parameter hinzu. Um es in Erinnerung zu behalten, können Sie es in Ihrem~/.my.cnf
zSo wird es für das nächste Mal in Erinnerung bleiben.
quelle
In meiner (ich habe LAMP installiert) / etc / mysql /my.cnf Datei fand ich folgende, kommentierten Zeilen in Abschnitt [mysqld]:
Ich musste diese Datei als Superuser mit Terminal öffnen:
(Ich bevorzuge Geany anstelle von gedit oder VI, es spielt keine Rolle)
Ich habe sie nur auskommentiert und die Datei gespeichert und dann MySQL mit neu gestartet
Führen Sie mehrere Abfragen aus, öffnen Sie die obige Datei (/var/log/mysql/mysql.log) und das Protokoll war da :)
quelle
Aus dem MySQL-Referenzhandbuch:
Überprüfen Sie
/var/lib/mysql
Ordner.quelle
sudo -s
dann versuchen, in den MySQL-Ordner zu wechseln.Als Ergänzung zu Loyolas Antwort ist zu erwähnen, dass ab MySQL 5.1
log_slow_queries
veraltet und durch ersetzt wirdslow-query-log
Die Verwendung
log_slow_queries
führt dazu, dass Ihrservice mysql restart
oderservice mysql start
fehlschlägtquelle
quelle
Zusätzlich zu den obigen Antworten können Sie Befehlszeilenparameter für die Protokollierungsoptionen an den mysqld-Prozess übergeben, anstatt Ihre conf-Datei manuell zu bearbeiten. So aktivieren Sie beispielsweise die allgemeine Protokollierung und geben eine Datei an:
Wenn Sie andere Antworten oben bestätigen, erhalten
mysqld --help --verbose
Sie die Werte aus der conf-Datei (daher ist das Ausführen mit den Befehlszeilenoptionen general-log FALSE). in der Erwägung, dassmysql -se "SHOW VARIABLES" | grep -e log_error -e general_log
:Verwenden Sie eine etwas kompaktere Syntax für das Fehlerprotokoll:
quelle