SQL-Befehl zum Anzeigen des Abfrageverlaufs


Antworten:


161

Versuchen

 cat ~/.mysql_history

Dies zeigt Ihnen alle MySQL-Befehle, die auf dem System ausgeführt wurden


2
Nun, nicht alle , Unterdrückung tritt bei einigen auf, die Zeichenfolgen wie "Passwort" enthalten.
McKenzm

1
Außerdem ist es mit Ihrer geöffneten MySQL-CLI normalerweise nicht auf dem neuesten Stand, sodass Sie wahrscheinlich MySQL benötigen, exitum die Datei zu lesen.
Joel Mellon

1
Dies zeigt nur Befehle, die von dem angemeldeten Benutzer ausgeführt werden.
Christia

1
Wie das in windowss geht
ßiansor Å. Ålmerol

Gibt es eine Möglichkeit, dass andere Befehle unterdrückt werden oder dass sie ungeordnet sind? Und aktualisiert sich das Protokoll selbst in Echtzeit?
Drubio

32

Für MySQL> 5.1.11 oder MariaDB

  1. SET GLOBAL log_output = 'TABLE';
  2. SET GLOBAL general_log = 'ON';
  3. Schauen Sie sich den Tisch an mysql.general_log

Wenn Sie in eine Protokolldatei ausgeben möchten:

  1. SET GLOBAL log_output = "FILE";
  2. SET GLOBAL general_log_file = "/path/to/your/logfile.log"
  3. SET GLOBAL general_log = 'ON';

Wie von jeffmjack in den Kommentaren erwähnt, werden diese Einstellungen vor der nächsten Sitzung vergessen, es sei denn, Sie bearbeiten die Konfigurationsdateien (z. B. bearbeiten /etc/mysql/my.cnf, dann neu starten, um Änderungen zu übernehmen).

Nun, wenn Sie möchten, können Sie tail -f /var/log/mysql/mysql.log

Weitere Infos hier: Server Systemvariablen


3
Nur eine Klarstellung zu den obigen Punkten: Die Befehle zum Kopieren und Einfügen gelten für eine einzelne Sitzung von MySQL. Sie können diese beispielsweise über die interaktive MySQL-Befehlszeile eingeben. Wenn Sie möchten, dass sie eine dauerhafte Funktion Ihrer MySQL-Instanz sind, müssen Sie diese Befehle in /etc/mysql/my.cnf einfügen und den MySQL-Dienst neu starten.
Jeffmjack

Beachten Sie auch, dass die Protokollierung angehalten wird, wenn sie /path/to/your/logfile.loggelöscht wird, bis Sie sie SET GLOBAL general_log_file = "/path/to/your/logfile.log";erneut ausführen (oder die Sitzung möglicherweise neu starten, wenn Sie die Konfiguration bearbeitet haben?).
Skippy le Grand Gourou

21

(Linux) Öffnen Sie Ihr Terminal, ctrl+alt+t führen Sie den Befehl aus

 cat ~/.mysql_history

Sie werden alle vorherigen MySQL-Abfrageverlauf genießen :)


17

Sie werden es dort finden

~/.mysql_history

Sie werden es wie folgt lesbar machen (ohne die Escapezeichen):

sed "s/\\\040/ /g" < .mysql_history

2

Schauen ~/.myslgui/query-browser/history.xml Sie sich hier die letzten Abfragen an, die mit mysql_query_browser (einige Tage alt) gemacht wurden.



-1

Sie können sich den Abfrage-Cache ansehen: http://www.databasejournal.com/features/mysql/article.php/3110171/MySQLs-Query-Cache.htm, aber es gibt Ihnen möglicherweise keinen Zugriff auf die tatsächlichen Abfragen und wird sehr Hit-and-Miss, wenn es funktioniert hat (subtiles Wortspiel beabsichtigt)

Aber MySQL Query Browser verwaltet sehr wahrscheinlich eine eigene Liste von Abfragen, die außerhalb der MySQL-Engine ausgeführt werden. Sie müssten dasselbe in Ihrer App tun.

Bearbeiten: Siehe Dan Ms Kommentar, der dazu führt: Wie werden die letzten auf MySQL ausgeführten Abfragen angezeigt? sieht gut aus.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.