コマンド早見表 #
解説は不要という方は、以下のコマンドをそのままコピーしてご利用ください。
- クエリログの設定確認
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となっています。
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
以上で、クエリログが永続的に無効化されます。