MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
このセクションでは、セクション6.4.5.1「MySQL Enterprise Audit の要素」 で説明されている監査ログプラグインおよび関連要素を使用して実装される MySQL Enterprise Audit をインストールまたはアンインストールする方法について説明します。 プラグインのインストールについての一般的な情報は、セクション5.6.1「プラグインのインストールおよびアンインストール」を参照してください。
指示に従う前に、このセクション全体をお読みください。 手順の一部は、環境によって異なります。
インストールされている場合、audit_log
プラグインは、無効になっていても最小限のオーバーヘッドを伴います。 このオーバーヘッドを回避するには、使用する予定がないかぎり、MySQL Enterprise Audit をインストールしないでください。
サーバーで使用できるようにするには、プラグインライブラリファイルを MySQL プラグインディレクトリ (plugin_dir
システム変数で指定されたディレクトリ) に配置する必要があります。 必要に応じて、サーバーの起動時に plugin_dir
の値を設定してプラグインディレクトリの場所を構成します。
MySQL Enterprise Audit をインストールするには、MySQL インストールの share
ディレクトリを検索し、ご使用のプラットフォームに適したスクリプトを選択します。 使用可能なスクリプトは、プラグインライブラリファイルの参照に使用される接尾辞とは異なります:
audit_log_filter_win_install.sql
: ファイル名の接尾辞として .dll
を使用する Windows システムの場合は、このスクリプトを選択します。
audit_log_filter_linux_install.sql
: Linux および .so
をファイル名接尾辞として使用する類似システムの場合は、このスクリプトを選択します。
次のようにスクリプトを実行します。 この例では、Linux インストールスクリプトを使用します。 システムに適切な置換を行います。
shell>mysql -u root -p < audit_log_filter_linux_install.sql
Enter password:(enter root password here)
一部の MySQL バージョンでは、MySQL Enterprise Audit テーブルの構造が変更されています。 以前のバージョンの MySQL 8.0 からのアップグレードでテーブルが最新であることを確認するには、MySQL のアップグレード手順を実行し、更新を強制するオプションを使用してください (セクション2.11「MySQL のアップグレード」 を参照)。 MySQL Enterprise Audit テーブルに対してのみ UPDATE ステートメントを実行する場合は、次の説明を参照してください。
MySQL 8.0.12 以降、新規 MySQL インストールでは、MySQL Enterprise Audit により使用される audit_log_user
テーブルの USER
および HOST
カラムは、mysql.user
システムテーブルの User
および Host
カラムの定義によりよく対応する定義を持ちます。 MySQL Enterprise Audit がすでにインストールされているインストールにアップグレードする場合は、次のようにテーブル定義を変更することをお薦めします:
ALTER TABLE mysql.audit_log_user DROP FOREIGN KEY audit_log_user_ibfk_1; ALTER TABLE mysql.audit_log_filter CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci; ALTER TABLE mysql.audit_log_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci; ALTER TABLE mysql.audit_log_user MODIFY COLUMN USER VARCHAR(32); ALTER TABLE mysql.audit_log_user ADD FOREIGN KEY (FILTERNAME) REFERENCES mysql.audit_log_filter(NAME);
ソース/レプリカレプリケーション、グループレプリケーションまたは InnoDB クラスタ のコンテキストで MySQL Enterprise Audit を使用するには、ソースノードでインストールスクリプトを実行する前にレプリカノードを準備する必要があります。 これは、スクリプト内の INSTALL PLUGIN
ステートメントがレプリケートされないために必要です。
各レプリカノードで、インストールスクリプトから INSTALL PLUGIN
ステートメントを抽出し、手動で実行します。
ソースノードで、前述のようにインストールスクリプトを実行します。
プラグインのインストールを確認するには、INFORMATION_SCHEMA.PLUGINS
テーブルを調べるか、SHOW PLUGINS
ステートメントを使用します (セクション5.6.2「サーバープラグイン情報の取得」 を参照)。 例:
mysql>SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE 'audit%';
+-------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS | +-------------+---------------+ | audit_log | ACTIVE | +-------------+---------------+
プラグインの初期化に失敗した場合は、サーバーエラーログで診断メッセージを確認してください。
MySQL Enterprise Audit のインストール後、--audit-log
オプションを使用して、後続のサーバー起動で audit_log
プラグインのアクティブ化を制御できます。 たとえば、プラグインが実行時に削除されないようにするには、このオプションを使用します:
[mysqld] audit-log=FORCE_PLUS_PERMANENT
監査プラグインを使用せずにサーバーが実行されることを回避する必要がある場合は、FORCE
または FORCE_PLUS_PERMANENT
の値とともに --audit-log
を使用して、プラグインが正常に初期化されない場合にサーバーの起動を強制的に失敗させます。
デフォルトでは、ルールベースの監査ログのフィルタリングでは、ユーザーの監査可能なイベントは記録されません。 これは、すべてのユーザーのすべての監査可能イベントを記録するレガシー監査ログの動作とは異なります (セクション6.4.5.9「レガシーモード監査ログのフィルタリング」 を参照)。 ルールベースのフィルタリングを使用してログ詳細動作を生成する場合は、ロギングを有効にする単純なフィルタを作成し、それをデフォルトアカウントに割り当てます:
SELECT audit_log_filter_set_filter('log_all', '{ "filter": { "log": true } }'); SELECT audit_log_filter_set_user('%', 'log_all');
%
に割り当てられたフィルタは、フィルタが明示的に割り当てられていないアカウントからの接続に使用されます (最初はすべてのアカウントに適用されます)。
前述のようにインストールすると、MySQL Enterprise Audit はアンインストールされるまでインストールされたままになります。 削除するには、次のステートメントを実行します:
DROP TABLE IF EXISTS mysql.audit_log_user; DROP TABLE IF EXISTS mysql.audit_log_filter; UNINSTALL PLUGIN audit_log; DROP FUNCTION audit_log_filter_set_filter; DROP FUNCTION audit_log_filter_remove_filter; DROP FUNCTION audit_log_filter_set_user; DROP FUNCTION audit_log_filter_remove_user; DROP FUNCTION audit_log_filter_flush; DROP FUNCTION audit_log_encryption_password_get; DROP FUNCTION audit_log_encryption_password_set; DROP FUNCTION audit_log_read; DROP FUNCTION audit_log_read_bookmark;