Holen Sie sich den Befehlsverlauf in MySQL
- MySQL-Befehlsverlauf
- Verwenden Sie die Windows-Befehlszeile, um den Befehlsverlauf in MySQL abzurufen
- Verwenden Sie MySQL Workbench unter Windows, um den MySQL-Befehlsverlauf abzurufen
- Verwenden Sie das Ubuntu-Terminal, um den Verlauf der MySQL-Befehle abzurufen
Dieser Artikel zeigt verschiedene Möglichkeiten in Windows und Linux auf, den Verlauf der von uns ausgeführten MySQL-Befehle abzurufen.
MySQL-Befehlsverlauf
Wir werden die Betriebssysteme Windows und Linux (Ubuntu 20.04) verwenden, um mehr über die verschiedenen Ansätze zum Abrufen des Verlaufs von MySQL-Befehlen zu erfahren.
Für Windows-Betriebssysteme verwenden wir die MySQL Workbench und die Windows-Befehlszeile (auch bekannt als cmd und Eingabeaufforderung), um auf den Verlauf der MySQL-Befehle in Form einer Datei und einer Tabelle zuzugreifen.
Im Fall von Linux OS verwenden wir die Linux-Shell (Terminal), um auf den MySQL-Befehlsverlauf zuzugreifen.
Verwenden Sie die Windows-Befehlszeile, um den Befehlsverlauf in MySQL abzurufen
Hier werden wir drei Methoden untersuchen, um den Befehlsverlauf in MySQL abzurufen.
Holen Sie sich den Verlauf aller MySQL-Befehle in tabellarischer Form
-
Öffnen Sie die Windows-Befehlszeile und gehen Sie zum MySQL-Ordner
bin
, der sich standardmäßig unterC:\Programme\MySQL\MySQL Server 8.0\bin
befindet. -
Melden Sie sich mit Ihren Anmeldedaten bei MySQL an.
-
Führen Sie die folgenden zwei Abfragen aus, um das MySQL-Abfrageprotokoll zu aktivieren und den Verlauf der MySQL-Befehle in tabellarischer Form vorzubereiten.
SET GLOBAL log_output = 'table'; SET GLOBAL general_log = 'on';
-
Führen Sie die folgende Abfrage aus, um den Verlauf der ausgeführten MySQL-Befehle als Ausgabe zu erhalten.
SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
In der obigen Abfrage verwenden wir die Methode convert()
, um die hexadezimalen Werte des Felds argument
in Text umzuwandeln. Sie können die Attributwerte argument
auch in hexadezimalen Werten erhalten, wenn Sie MySQL Version 5.7 oder höher verwenden.
Da wir in der Befehlszeile nur begrenzt Platz haben, wählen wir bestimmte Felder wie folgt aus:
SELECT a.event_time,a.user_host, a.thread_id, a.server_id,
CONVERT(a.argument USING utf8) AS arugment
FROM mysql.general_log a LIMIT 10;
Ausgang:
Holen Sie sich den Verlauf aller MySQL-Befehle in einer Datei
Diese Methode ist der vorherigen sehr ähnlich. Wir müssen nur die folgenden Abfragen ausführen, nachdem wir uns bei MySQL angemeldet haben.
SET GLOBAL log_output = 'file';
SET GLOBAL general_log_file = "/yourPath/logfile.log";
SET GLOBAL general_log = 'on';
Suchen Sie nun die Datei im angegebenen Pfad und öffnen Sie sie, um alle Details anzuzeigen. Normalerweise sieht die Datei Dateiname.log
wie folgt aus.
Ausgang:
Abrufen des Verlaufs des zuletzt ausgeführten MySQL-Befehls für eine bestimmte Sitzung
Wir können den zuletzt ausgeführten MySQL-Befehl auch nur finden, indem wir die folgende Abfrage für eine bestimmte Sitzung verwenden. Wir tun dies hier für root
und wählen aufgrund des begrenzten Platzes in der Befehlszeile nur zwei Felder aus.
SELECT a.event_time,CONVERT(a.argument USING utf8) AS arugment
FROM mysql.general_log a WHERE user_host LIKE 'root%'
ORDER BY a.event_time DESC LIMIT 1;
Ausgang:
Verwenden Sie MySQL Workbench unter Windows, um den MySQL-Befehlsverlauf abzurufen
Wir haben auch hier drei Möglichkeiten, um den Verlauf der MySQL-Befehle abzurufen. Diese Methoden sind die gleichen, die wir anhand der Windows-Befehlszeile besprochen haben. Aber dieses Mal werden wir auf der MySQL Workbench ausführen.
Holen Sie sich den MySQL-Befehlsverlauf in tabellarischer Form
Wir führen die folgenden Abfragen aus, um den Verlauf der MySQL-Befehle in tabellarischer Form zu erhalten. Hier wandelt die Methode convert()
die blob
-Werte des argument
-Felds in Text um.
Sie können die Werte des Attributs argument
auch als blob
in Workbench erhalten, wenn Sie MySQL Version 5.7 oder höher verwenden.
SET GLOBAL log_output = 'table';
SET GLOBAL general_log = 'on';
SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
Ausgang:
Anstatt Abfragen zu schreiben, können wir die Option History Output
(hervorgehoben im folgenden Screenshot) verwenden, um den Verlauf der Befehle abzurufen.
Holen Sie sich den MySQL-Befehlsverlauf in einer Datei oder mehreren Dateien
Wir können den gesamten Verlauf in einer Datei unter dem angegebenen Pfad abrufen.
SET GLOBAL log_output = 'file';
SET GLOBAL general_log_file = "/yourPath/logfile.log";
SET GLOBAL general_log = 'on';
Wir können auch zum Speicherort C:\Users\DELL\AppData\Roaming\MySQL\Workbench\sql_history
gehen, um alle einzelnen Dateien mit dem Verlauf der MySQL-Befehle anzuzeigen.
Abrufen des MySQL-Befehlsverlaufs für die zuletzt ausgeführte Abfrage
SELECT a.*,CONVERT(a.argument USING utf8) AS arugment
FROM mysql.general_log a WHERE user_host LIKE 'root%'
ORDER BY a.event_time DESC LIMIT 1;
Ausgang:
Verwenden Sie das Ubuntu-Terminal, um den Verlauf der MySQL-Befehle abzurufen
Führen Sie den folgenden Befehl aus, nachdem Sie sich als super user
angemeldet haben.
cat ~/.mysql_history
Ausgang:
Sie können den folgenden Befehl ausführen, um die Leerzeichen zu entfernen und sie besser lesbar zu machen.
sed "s/\\\040/ /g" < ~/.mysql_history
Ausgang: