メインコンテンツへスキップ
  1. ブログ/

MySQLでクエリログの出力設定を有効化する方法

·
データベース MySQL
目次

クエリログとは?
#

クエリログは、データベースに対して実行されたSQLクエリを記録するログとなります。

このログには、ユーザーが実行したSQLコマンドや接続に関する情報が含まれおり、主にデバッグや監査、パフォーマンス分析の目的で利用されます。

MySQL9.0ではクエリログ(general_log)の出力設定はデフォルトではOFFとなっています。

mysql9.0公式ドキュメント

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

以上でクエリログが永続的に記録されるようになります。