メインコンテンツへスキップ
  1. ブログ/

MySQLのクエリログ(general_log)を有効化・確認する方法

·
データベース MySQL
目次

MySQLでクエリログの出力を有効化する方法
MySQLでクエリログの出力を有効化する方法

コマンド早見表
#

解説は不要という方は、以下のコマンドをそのままコピーしてご利用ください。

  • クエリログの設定確認
SHOW VARIABLES LIKE 'general_log%';
  • 一時的に有効化
SET GLOBAL general_log = 'ON';
  • 一時的に無効化
SET GLOBAL general_log = 'OFF';
  • 永続的に有効化(/etc/my.cnf)
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log

クエリログとは?
#

クエリログは、データベースに対して実行されたSQLクエリを記録するログとなります。

このログには、ユーザーが実行したSQLコマンドや接続に関する情報が含まれおり、主にデバッグや監査、パフォーマンス分析の目的で利用されます。

MySQL9.0ではクエリログ(general_log)の出力設定はデフォルトではOFFとなっています。

mysql9.0公式ドキュメント

MySQLに接続
#

では早速、クエリログ設定の確認を行います。

初めにデータベースへのログインを行います。

サーバーへSSH接続を行ってください。

次に以下のコマンドを利用しデータベース(MySQL)へログインを行ってください。

mysql -u ユーザー名 -p

設定の確認
#

MySQLへのログインが完了したら下記のクエリを実行し、一般設定を表示してください。

SHOW VARIABLES LIKE 'general_log%';

下記、出力結果の例となります。

+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| general_log      | OFF                        |
| general_log_file | ログパス                    |
+------------------+----------------------------+

general_log」はクエリログ出力の設定ステータスとなります。

ONとなっている場合、クエリログ出力が有効化されており。OFFとなっている場合は無効化状態となっております。

general_log_file」はクエリログの出力先パスとなります。

ログ出力が有効化されている場合、general_log_fileにて指定されたパスにログが出力されます。

一時的にクエリログを有効化する方法
#

クエリログを一時的に有効化するには、MySQLのクエリで以下のコマンドを実行します。

SET GLOBAL general_log = 'ON';

これにより、一時的にgeneral_log設定が有効となります。

+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| general_log      | ON                         |
| general_log_file | ログパス                    |
+------------------+----------------------------+

ただし本設定は一時的な設定となっておりMySQLサーバーを再起動した場合、デフォルト値となります。

永続的にクエリログを有効化する方法
#

永続的にクエリログを有効化するためには、MySQLの設定ファイル(一般的には/etc/my.cnf)の[mysqld]セクションに設定を記述します。

独自の構成を取っている場合は、該当する設定ファイルに記述してください。

設定内容は以下となっております。

[mysqld]
general_log = 1
general_log_file = ログパス

設定を反映させるため、MySQLサーバーを再起動します。

systemctl restart mysql

以上でクエリログが永続的に記録されるようになります。

有効化したログの確認方法
#

クエリログが有効化されている場合、general_log_file に指定されたパスにログが出力されます。

以下のコマンドでログファイルのパスを確認できます。

SHOW VARIABLES LIKE 'general_log_file';

出力例は以下となります。

+------------------+--------------------------------+
| Variable_name    | Value                          |
+------------------+--------------------------------+
| general_log_file | /var/log/mysql/general.log     |
+------------------+--------------------------------+

確認したパスに対して、tail コマンドでリアルタイムにログを確認することができます。

tail -f /var/log/mysql/general.log

ログには以下のような形式で記録されます。

2026-05-10T10:00:00.000000Z    8 Query    SELECT * FROM users WHERE id = 1;
2026-05-10T10:00:01.000000Z    8 Query    UPDATE users SET name = 'test' WHERE id = 1;

無効化方法
#

一時的に無効化する方法
#

MySQLのクエリで以下のコマンドを実行することで、一時的にクエリログを無効化できます。

SET GLOBAL general_log = 'OFF';

こちらも有効化と同様に、MySQLサーバーを再起動した場合はデフォルト値に戻ります。

永続的に無効化する方法
#

永続的に無効化するには、設定ファイル(/etc/my.cnf)の[mysqld]セクションを以下のように変更します。

[mysqld]
general_log = 0

次に設定を反映させるため、MySQLサーバーを再起動します。

systemctl restart mysql

以上で、クエリログが永続的に無効化されます。