一般クエリログの有効化と確認
一般クエリログは、クライアントから受信したすべての SQL ステートメントを記録します。デバッグや監査に非常に役立つツールですが、パフォーマンスに影響を与えたり、ディスク容量を大量に消費したりする可能性があるため、一時的に使用する必要があります。このステップでは、ログを有効にし、アクティビティを生成し、ログファイルをレビューします。
まず、デスクトップからターミナルを開きます。
root ユーザーとして MySQL サーバーに接続します。この実験 (lab) 環境では、パスワードなしで接続するために sudo を使用できます。
sudo mysql -u root
mysql> プロンプトが表示されたら、一般クエリログをグローバルに有効にします。
SET GLOBAL general_log = 'ON';
デフォルトでは、ログファイルは MySQL のデータディレクトリに保存されます。アクセスを容易にするために、その場所を /tmp ディレクトリに変更しましょう。
SET GLOBAL general_log_file = '/tmp/mysql_general.log';
次のコマンドを実行して、新しい場所を確認できます。
SHOW VARIABLES LIKE 'general_log_file';
出力は、先ほど設定したパスを確認するはずです。
+------------------+-------------------------+
| Variable_name | Value |
+------------------+-------------------------+
| general_log_file | /tmp/mysql_general.log |
+------------------+-------------------------+
1 row in set (0.01 sec)
次に、いくつかのコマンドを実行してログエントリを生成します。
CREATE DATABASE IF NOT EXISTS testdb;
USE testdb;
SELECT 'Logging this query' AS message;
これらのコマンドを実行した後、MySQL シェルを終了します。
exit
ターミナルに戻り、ログファイルの内容を表示します。
sudo cat /tmp/mysql_general.log
実行したコマンド、接続情報、タイムスタンプが表示されます。これにより、一般クエリログが正しく機能していることが確認できます。
/usr/sbin/mariadbd, Version: 10.6.18-MariaDB-0ubuntu0.22.04.1 (Ubuntu 22.04). started with:
Tcp port: 3306 Unix socket: /run/mysqld/mysqld.sock
Time Id Command Argument
250728 14:12:46 33 Query SHOW VARIABLES LIKE 'general_log_file'
250728 14:12:50 33 Query CREATE DATABASE IF NOT EXISTS testdb
33 Query SELECT DATABASE()
33 Init DB testdb
33 Query show databases
33 Query show tables
33 Query SELECT 'Logging this query' AS message
250728 14:12:56 33 Quit
最後に、作業が完了したらログを無効にすることをお勧めします。これはターミナルから直接行うことができます。
sudo mysql -u root -e "SET GLOBAL general_log = 'OFF';"
これにより、ログが成長し続け、サーバーのパフォーマンスに影響を与えることを防ぎます。