MySQLの一般ログ(General Log)を有効にする方法【SETコマンドの使い方】
はじめに
MySQLでは、サーバーに対して実行されたすべてのSQL文を記録する「一般ログ(General Log)」を利用できます。トラブルシューティングやクエリの動作確認などに便利な機能ですが、デフォルトでは無効になっています。本記事では、SETコマンドを使って一般ログを有効化する手順と、ログファイルの出力先を変更する方法を解説します。
一般ログを有効化する構文
一般ログをオンにするには、以下のようにSETコマンドを使用します。
set global general_log=ON;
現在のログ設定を確認する
まず、SHOWコマンドを使って、一般ログの現在の状態を確認してみましょう。
mysql> SHOW variables like '%general_log%';
実行すると、次のような出力が得られます。初期状態では「OFF」になっていることがわかります。
+------------------+---------------------+ | Variable_name | Value | +------------------+---------------------+ | general_log | OFF | | general_log_file | DESKTOP-QN2RB3H.log | +------------------+---------------------+ 2 rows in set (0.06 sec)
- general_log: ログの有効/無効(ON/OFF)の状態
- general_log_file: ログが出力されるファイル名
一般ログをオンにする
それでは、実際に一般ログを有効化するクエリを実行します。
mysql> set global general_log=ON; Query OK, 0 rows affected (0.18 sec)
もう一度、SHOWコマンドで状態を確認しましょう。
mysql> SHOW variables like '%general_log%';
今度は「general_log」が「ON」に変わっており、ログが正常に有効化されたことが確認できます。
+------------------+---------------------+ | Variable_name | Value | +------------------+---------------------+ | general_log | ON | | general_log_file | DESKTOP-QN2RB3H.log | +------------------+---------------------+ 2 rows in set (0.01 sec)
ログファイルの出力先を変更する方法
必要に応じて、general_log_file変数を変更することで、ログファイルの保存場所を指定することもできます。
mysql> SET GLOBAL general_log_file = 'E:\mysqllog'; Query OK, 0 rows affected (0.11 sec)
再度確認すると、出力先が新しいパスに変更されていることがわかります。
+------------------+------------+ | Variable_name | Value | +------------------+------------+ | general_log | ON | | general_log_file | E:mysqllog | +------------------+------------+ 2 rows in set (0.01 sec)
注意点
SET GLOBALコマンドによる設定変更は一時的なものであり、MySQLサーバーを再起動すると元の設定に戻ります。恒久的に有効化したい場合は、設定ファイル(my.cnf / my.ini)に以下のように記述してください。
[mysqld] general_log = ON general_log_file = /var/log/mysql/general.log
また、一般ログはすべてのクエリを記録するため、ディスク容量を大量に消費する可能性があります。運用環境で長期間有効にする場合は、ログローテーションの設定や定期的な監視を行うことをおすすめします。
まとめ
MySQLの一般ログは、「set global general_log=ON;」というシンプルなSETコマンドだけで簡単に有効化できます。SHOW VARIABLESコマンドで状態を随時確認しながら、必要に応じてログファイルの出力先も変更できます。デバッグやクエリ調査の際にぜひ活用してください。
-
MySQLのフィールドに現在の日付を設定する方法(UNIX_TIMESTAMP(now)の使い方)
MySQLでは、unix_timestamp()関数を使うことで、現在の日時をUNIXタイムスタンプとして取得し、テーブルのフィールドに簡単に設定できます。この記事では、実際にテーブルを作成し、現在の日付(UNIXタイムスタンプ)をフィールドに設定する手順を解説します。UNIXタイムスタンプとはUNIXタイムスタンプとは、1970年1月1日00:00:00 UTCからの経過秒数を表す数値です。日時を整数として扱えるため、比較や計算が容易になり、データベースでの時間管理によく利用されます。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql>
-
mysqldとは?MySQLサーバーの基本構造と起動方法を徹底解説
本記事では、MySQLサーバーの中核となる「mysqld」について、その仕組みや起動方法、システム変数の役割までわかりやすく解説します。 mysqldとは mysqldは「MySQLサーバー」とも呼ばれるプログラムで、MySQL環境における処理の大部分を担う単一のマルチスレッド型プログラムです。mysqldは追加のプロセスを生成せず、1つのプロセス内で効率的に動作するよう設計されています。 MySQLサーバーは、データベースやテーブルを格納する「MySQLデータディレクトリ」へのアクセス管理を担当します。このデータディレクトリは、ログファイルやステータスファイルなど、その他の情報を保存するデ