MySQL でコマンド履歴を取得する

Mehvish Ashiq 2023年6月20日
  1. MySQL コマンド履歴
  2. Windows コマンド ラインを使用して MySQL のコマンド履歴を取得する
  3. Windows で MySQL Workbench を使用して MySQL コマンド履歴を取得する
  4. Ubuntu ターミナルを使用して MySQL コマンドの履歴を取得する
MySQL でコマンド履歴を取得する

この記事では、Windows と Linux で実行した MySQL コマンドの履歴を取得するさまざまな方法について説明します。

MySQL コマンド履歴

Windows および Linux (Ubuntu 20.04) オペレーティング システムを使用して、MySQL コマンドの履歴を取得するためのさまざまなアプローチについて学習します。

Windows OS の場合、MySQL Workbench と Windows コマンド ライン (cmd およびコマンド プロンプトとも呼ばれます) を使用して、ファイルとテーブルの形式で MySQL コマンドの履歴にアクセスします。

Linux OS の場合、Linux シェル (ターミナル) を使用して MySQL コマンド履歴にアクセスします。

Windows コマンド ラインを使用して MySQL のコマンド履歴を取得する

ここでは、MySQL でコマンド履歴を取得する 3つの方法について説明します。

すべての MySQL コマンドの履歴を表形式で取得する

  1. Windows コマンド ラインを開き、デフォルトで C:\Program Files\MySQL\MySQL Server 8.0\bin にある MySQL bin フォルダーに移動します。

  2. ログイン資格情報を使用して MySQL にログインします。

  3. 次の 2つのクエリを実行して、MySQL クエリ ログをオンにし、MySQL コマンドの履歴を表形式で準備します。

    SET GLOBAL log_output = 'table';
    SET GLOBAL general_log = 'on';
    
  4. 次のクエリを実行して、実行された MySQL コマンドの履歴を出力として取得します。

    SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
    

上記のクエリでは、convert() メソッドを使用して、argument フィールドの 16 進数値をテキストに変換します。 MySQL バージョン 5.7 以降を使用して、argument 属性値を 16 進値で取得することもできます。

コマンド ラインのスペースが限られているため、次のように特定のフィールドを選択しています。

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;

出力:

mysql コマンド履歴 cmd

ファイル内のすべての MySQL コマンドの履歴を取得する

この方法は、前の方法と非常によく似ています。 MySQL にログインした後、次のクエリを実行するだけです。

SET GLOBAL log_output = 'file';
SET GLOBAL general_log_file = "/yourPath/logfile.log";
SET GLOBAL general_log = 'on';

ここで、指定されたパスでファイルを見つけて開き、すべての詳細を確認します。 通常、filename.log ファイルは次のようになります。

出力:

ファイル内の mysql コマンド履歴 cmd

指定されたセッションで最後に実行された MySQL コマンドの履歴を取得する

特定のセッションに対して次のクエリを使用することによってのみ、最後に実行された MySQL コマンドを見つけることもできます。 ここでは root に対してこれを行っており、コマンド ラインのスペースが限られているため、2つのフィールドのみを選択しています。

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;

出力:

最後のクエリの mysql コマンド履歴コマンド

Windows で MySQL Workbench を使用して MySQL コマンド履歴を取得する

ここでも、MySQL コマンドの履歴を取得する 3つの方法があります。 これらの方法は、Windows コマンド ラインを使用して説明したものと同じです。 ただし、今回は MySQL Workbench で実行します。

MySQL コマンド履歴を表形式で取得する

次のクエリを実行して、MySQL コマンドの履歴を表形式で取得します。 ここで、convert() メソッドは argument フィールドの blob 値をテキストに変換します。

MySQL バージョン 5.7 以降を使用している場合、Workbench で argument 属性の値を blob として取得することもできます。

SET GLOBAL log_output = 'table';
SET GLOBAL general_log = 'on';
SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;

出力:

テーブル内の mysql コマンド履歴ワークベンチ

クエリを記述する代わりに、History Output オプション (次のスクリーンショットで強調表示されている) を使用して、コマンドの履歴を取得できます。

mysql コマンド履歴 ワークベンチ履歴オプション

1つのファイルまたは複数のファイルで MySQL コマンド履歴を取得する

指定したパスにある 1つのファイルですべての履歴を取得できます。

SET GLOBAL log_output = 'file';
SET GLOBAL general_log_file = "/yourPath/logfile.log";
SET GLOBAL general_log = 'on';

C:\Users\DELL\AppData\Roaming\MySQL\Workbench\sql_history の場所に移動して、MySQL コマンドの履歴を持つ個々のファイルをすべて表示することもできます。

最後に実行されたクエリの MySQL コマンド履歴を取得する

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;

出力:

最後のクエリの mysql コマンド履歴ワークベンチ

Ubuntu ターミナルを使用して MySQL コマンドの履歴を取得する

スーパーユーザーとしてログインした後、次のコマンドを実行します。

cat ~/.mysql_history

出力:

ubuntu パート 1 を使用した mysql コマンド履歴

次のコマンドを実行してスペースを削除し、読みやすくすることができます。

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

出力:

ubuntu を使用した mysql コマンド履歴パート 2

著者: Mehvish Ashiq
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