一般クエリログは,mysqldの実行内容の一般的な記録です。サーバーは,クライアントが接続または接続解除したときに情報をこのログに書き込み,クライアントから受け取った各SQLステートメントをログに記録します。一般クエリログは,クラ,クラmysqldに送信した内容を正確に知りたい場合に非常に役立ことがあります。
mysqldは,ステートメントを受け取った順にクエリーログに書き込みますが,ステートメントが実行された順番とは異なることがあります。このロギング順序はバイナリログの順序とは対照的で,バイナリログの場合,ステートメントはそれが実行されたあと,ロックがリリースされる前に書き込まれます。さらに,クエリーログはデータを選択するだけのステートメントを格納することもあり,そのようなステートメントはバイナリログには一切書き込まれません。
ステートメントベースのロギングを使用する場合,すべてのステートメントはクエリーログに書き込まれますが,行ベースのロギングを使用する場合,更新はSQLステートメントではなく行の変更として送信されるため,binlog_format
が行
のときは,これらのステトメントはクエリログに一切書き込まれません。使用されるステトメントによっては,この変数が混合
に設定された場合,所定の更新がクエリログに書き込まれないこともあります。詳細にいては,セクション17.1.2.1”ステートメントベースおよび行ベースレプリケーションのメリットとデメリット”を参照してください。
デフォルトでは,一般クエリログは無効になっています。初期の一般クエリログ状態を明示的に指定するには,——general_log [= {0 | 1}]
を使用します。引数を指定しないか,引数が1の場合,——general_log
によってログが有効になります。引数が0の場合,このオプションによってログが無効になります。ログファル名を指定するには,——general_log_file =
を使用します。ログの出力先を指定するには,(セクション5.2.1 "一般クエリログおよびスロクエリログの出力先の選択"で説明されている)file_name
——日志输出
を使用します。
一般クエリログファルの名前を指定しない場合,デフォルト名は
です。サーバーは,別のディレクトリを指定する絶対パス名が指定されないかぎり,データディレクトリ内にファイルを作成します。host_name
. log
実行時に一般クエリーログを無効化または有効化したり,ログファイル名を変更したりするには,グローバルなgeneral_log
およびgeneral_log_file
システム変数を使用します。general_log
を0(または从
)に設定するとログが無効化され,1(または在
にすると有効化されます。ログファルの名前を指定するには,general_log_file
を指定します。ログファereplicationルがすでに開いている場合,ログファereplicationルが閉じて新しいファereplicationルが開きます。
一般クエリログが有効な場合,サは——日志输出
オプションまたはlog_output
システム変数によって指定されたあらゆる出力先に出力を書き込みます。ログを有効にすると,サ。ただし,文件
ログの出力先が選択されないかぎり、ファ。出力先が没有一个
の場合,一般ログが有効な場合であってもサバはクエリを書き込みません。ログ出力先の値に文件
が含まれていない場合、ログファ以及ル名を設定してもロギングへの影響はありません。
サーバー再起動およびログフラッシュを行なっても,新しい一般クエリーログファイルは生成されません(ただし,フラッシュではファイルが閉じて再オープンします)。ファereplicationルを名前変更して新しいファereplicationルを作成するには,次のコマンドを使用します。
壳> mvhost_name. loghost_name-old.log shell> mysqladmin flush-logs shell> mvhost_name-old.log备份目录
Windowsでは,mvの代わりに重命名を使用してください。
また,ログを無効にすることによって,実行時に一般クエリ。
SET GLOBAL general_log = 'OFF';
ログが無効化されている場合、コマンド行などの外部からログファ以及ルを名前変更してください。そのあと,ログをふたたび有効にします。
SET GLOBAL general_log = 'ON';
この方法はすべてのプラットフォムで動作し,サ再起動を必要としません。
セッション変数sql_log_off
を在
または从
に設定して,現在の接続に。
MySQL 5.6.3以降では,一般クエリーログに書き込まれるステートメントのパスワードはサーバーによって書き換えられ,文字どおりに平文で表示されることはありません。一般クエリログにいてのパスワドの書き換えは,——log-raw
オプションでサバを起動することによって抑制できます。このオプションは,サーバーによって受け取られるステートメントの正確なテキストを表示する際の診断目的で役立つ場合がありますが,セキュリティー上の理由で本番用途では推奨されません。
MySQL 5.6.3より前では,ステートメント内のパスワードは書き換えられないため,一般クエリーログを保護するようにしてください。セクション6.1.2.3 "パスワドおよびロギング"を参照してください。
MySQL 5.6.3でのパスワード書き換えの導入による1つの影響として,(構文エラーなどが理由で)構文解析できないステートメントがパスワードなしであることを認識できないため,一般クエリーログに書き込まれなくなるということがあります。エラを持ものを含むすべてのステトメントのロギングを必要とする使用例では,——log-raw
オプションを使用しますが,このオプションはパスワードの書き込みをバイパスすることにも留意してください。