MySQL には、アカウント資格証明をチェックし、成功または失敗をサーバーエラーログに記録するテストプラグインが含まれています。 これは (組込みではなく) ロード可能なプラグインであり、使用する前にインストールする必要があります。
テストプラグインのソースコードは組み込みのネイティブプラグインとは異なり、サーバーソースとは別々のものであるため、ロード可能な認証プラグインを記述する方法を示す比較的単純な例として調査できます。
このプラグインはテストおよび開発を目的としており、本番環境やパブリックネットワークに公開されているサーバーでは使用できません。
次の表には、プラグインおよびライブラリファイルの名前を示します。 ファイル名のサフィクスは、システムによって異なる場合があります。 ファイルは、plugin_dir
システム変数で指定されたディレクトリに配置する必要があります。
表 6.22 テスト認証用のプラグインおよびライブラリ名
プラグインまたはファイル | プラグインまたはファイル名 |
---|---|
サーバー側プラグイン | test_plugin_server |
クライアント側プラグイン | auth_test_plugin |
ライブラリファイル | auth_test_plugin.so |
次の各セクションでは、プラガブル認証のテストに固有のインストールおよび使用方法について説明します:
MySQL のプラガブル認証に関する一般的な情報については、セクション6.2.17「プラガブル認証」を参照してください。
このセクションでは、テスト認証プラグインをインストールする方法について説明します。 プラグインのインストールについての一般的な情報は、セクション5.6.1「プラグインのインストールおよびアンインストール」を参照してください。
サーバーで使用できるようにするには、プラグインライブラリファイルを MySQL プラグインディレクトリ (plugin_dir
システム変数で指定されたディレクトリ) に配置する必要があります。 必要に応じて、サーバーの起動時に plugin_dir
の値を設定してプラグインディレクトリの場所を構成します。
サーバーの起動時にプラグインをロードするには、--plugin-load-add
オプションを使用して、プラグインを含むライブラリファイルに名前を付けます。 このプラグインのロード方式では、サーバーを起動するたびにオプションを指定する必要があります。 たとえば、サーバー my.cnf
ファイルに次の行を入力し、必要に応じてプラットフォームの .so
接尾辞を調整します:
[mysqld]
plugin-load-add=auth_test_plugin.so
my.cnf
を変更したら、新しい設定を有効にするためにサーバーを再起動します。
または、実行時にプラグインをロードするには、次のステートメントを使用して、必要に応じてプラットフォームの .so
接尾辞を調整します:
INSTALL PLUGIN test_plugin_server SONAME 'auth_test_plugin.so';
INSTALL PLUGIN
はプラグインをただちにロードし、mysql.plugins
システムテーブルにも登録して、--plugin-load-add
を必要とせずに後続の通常の起動のたびにサーバーがプラグインをロードするようにします。
プラグインのインストールを確認するには、INFORMATION_SCHEMA.PLUGINS
テーブルを調べるか、SHOW PLUGINS
ステートメントを使用します (セクション5.6.2「サーバープラグイン情報の取得」 を参照)。 例:
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE '%test_plugin%';
+--------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+--------------------+---------------+
| test_plugin_server | ACTIVE |
+--------------------+---------------+
プラグインの初期化に失敗した場合は、サーバーエラーログで診断メッセージを確認してください。
MySQL アカウントをテストプラグインに関連付けるには、テストプラガブル認証の使用 を参照してください。
テスト認証プラグインのアンインストールに使用する方法は、インストール方法によって異なります:
--plugin-load-add
オプションを使用してサーバーの起動時にプラグインをインストールした場合は、オプションなしでサーバーを再起動します。-
INSTALL PLUGIN
ステートメントを使用して実行時にプラグインをインストールした場合、サーバーの再起動後もインストールされたままになります。 アンインストールするには、UNINSTALL PLUGIN
を使用します:UNINSTALL PLUGIN test_plugin_server;
テスト認証プラグインを使用するには、IDENTIFIED WITH
句でアカウントを作成し、そのプラグインに名前を付けます:
CREATE USER 'testuser'@'localhost'
IDENTIFIED WITH test_plugin_server
BY 'testpassword';
次に、サーバーへの接続時に、そのアカウントの --user
および --password
オプションを指定します。 例:
shell> mysql --user=testuser --password
Enter password: testpassword
プラグインは、クライアントから受信したパスワードをフェッチし、mysql.user
システムテーブルのアカウント行の authentication_string
カラムに格納されている値と比較します。 2 つの値が一致する場合、プラグインは新しい実効ユーザー ID として authentication_string
値を返します。
サーバーエラーログで、認証が成功したかどうかを示すメッセージを確認できます (パスワードが 「user」 として報告されることに注意してください):
[Note] Plugin test_plugin_server reported:
'successfully authenticated user testpassword'