【MySQL】実行された全てのクエリを出力する「一般クエリログ」について

更新系・参照系問わずすべてのログが記録される。
ユーザーの接続・切断情報も記録される。
有効にするとすぐにログが肥大化するため、基本的にデバッグなどのときのみ有効にすると良い。
MySQL 5.6.3以降ではデフォルトでパスワードは平文で保存されることはないが、それより前の場合は書き換えないため、ログを保護する必要がある。
本番環境では要注意。

以下、一般クエリログに関連する設定値。
SHOW VARIABLES LIKE '%log%'; などで確認する。

  • general_log
    • ONにすると一般クエリログが有効になる
  • general_log_file
    • ログの出力先を指定

一般クエリログを有効にする。

SET GLOBAL general_log = 'ON';

SET GLOBALなので、全ての接続について影響を受ける。
再起動不要。

SET sql_log_off = 'ON';

セッション変数の変更なので、現在の接続についてのみ影響を受ける。
他の接続については影響を受けない。
再起動不要。

ログの出力先を変更する。

SET GLOBAL general_log_file = '/var/lib/mysql/hogefuga.log'

MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.2.3 一般クエリーログ