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.