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

Maysam Torabi
quelle
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

GTodorov
quelle
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 :)

Vamsidhar Muggulla
quelle
17

Sie werden es dort finden

~/.mysql_history

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

sed "s/\\\040/ /g" < .mysql_history
DimiDak
quelle
2

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

user4493696
quelle
0

Sie können den Verlauf von ~ / .mysql_history sehen. Der Inhalt der Datei wird jedoch von wctomb codiert. So zeigen Sie den Inhalt an:

shell> cat ~ / .mysql_history | python2.7 -c "import sys; print (''. join ([l.decode ('Unicode-Escape') für l in sys.stdin]))"

Quelle: Überprüfen Sie den MySQL-Abfrageverlauf über die Befehlszeile

GoYun.Info
quelle
-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.

Kieren Johnstone
quelle