Holen Sie sich den Befehlsverlauf in MySQL

Mehvish Ashiq 15 Februar 2024
  1. MySQL-Befehlsverlauf
  2. Verwenden Sie die Windows-Befehlszeile, um den Befehlsverlauf in MySQL abzurufen
  3. Verwenden Sie MySQL Workbench unter Windows, um den MySQL-Befehlsverlauf abzurufen
  4. Verwenden Sie das Ubuntu-Terminal, um den Verlauf der MySQL-Befehle abzurufen
Holen Sie sich den Befehlsverlauf in MySQL

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

  1. Öffnen Sie die Windows-Befehlszeile und gehen Sie zum MySQL-Ordner bin, der sich standardmäßig unter C:\Programme\MySQL\MySQL Server 8.0\bin befindet.

  2. Melden Sie sich mit Ihren Anmeldedaten bei MySQL an.

  3. 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';
    
  4. 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:

mysql-Befehlsverlauf cmd

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:

mysql-Befehlsverlauf cmd in Dateien

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:

mysql-Befehlsverlauf cmd für die letzte Abfrage

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:

mysql-Befehlsverlaufs-Workbench in Tabellen

Anstatt Abfragen zu schreiben, können wir die Option History Output (hervorgehoben im folgenden Screenshot) verwenden, um den Verlauf der Befehle abzurufen.

mysql-Befehlsverlauf Workbench-Verlaufsoption

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:

MySQL-Befehlsverlaufs-Workbench für die letzte Abfrage

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:

MySQL-Befehlsverlauf mit Ubuntu Teil eins

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:

mysql-Befehlsverlauf mit Ubuntu, Teil zwei

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook