MySQL 5.6.2 の時点では、Unix ソケットファイル経由でローカルホストから接続するクライアントを認証するサーバー側の認証プラグインが使用可能です。
このプラグインのソースコードは、ロード可能な認証プラグインを記述する方法を示す比較的単純な例として調査できます。
次の表には、プラグインおよびライブラリファイルの名前を示します。ファイル名のサフィクスは、システムによって異なる場合があります。ファイルの場所は、plugin_dir
システム変数で指定されたディレクトリです。インストールに関する情報については、セクション6.3.7「プラガブル認証」を参照してください。
表 6.14 MySQL ソケットピア証明書認証プラグイン
サーバー側のプラグイン名 | auth_socket |
クライアント側のプラグイン名 | なし (説明を参照してください) |
ライブラリオブジェクトファイル名 | auth_socket.so |
auth_socket
認証プラグインは、Unix
ソケットファイル経由でローカルホストから接続するクライアントを認証します。このプラグインは
SO_PEERCRED
ソケットオプションを使用して、クライアントプログラムを実行しているユーザーに関する情報を取得します。このプラグインは、ユーザー名がサーバーへのクライアントプログラムで指定された
MySQL
ユーザー名と一致するかどうかをチェックし、その名前が一致する場合にのみ接続を許可します。SO_PEERCRED
オプションがサポートされているシステム (Linux
など)
上でのみ、このプラグインを構築できます。
ソケットファイル経由でローカルホストから接続する際に、auth_socket
プラグインで認証される valerie
という名前のユーザー用に、MySQL
アカウントが作成されると仮定します。
CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;
stefanie
というログイン名を持つローカルホスト上のユーザーが
--user=valerie
オプションを付けて
mysql
を呼び出して、ソケットファイル経由で接続する場合、サーバーは
auth_socket
を使用してクライアントを認証します。このプラグインは、--user
オプションの値 (valerie
)
がクライアントユーザー名
(stephanie
)
とは異なると判断し、接続を拒否します。valerie
という名前のユーザーが同じことを試みた場合、プラグインはユーザー名と
MySQL ユーザー名が両方とも valerie
であると判断し、接続を許可します。ただし、TCP/IP
などの別のプロトコルを使用して接続されると、valerie
の場合でもプラグインは接続を拒否します。
MySQL のプラガブル認証に関する一般的な情報については、セクション6.3.7「プラガブル認証」を参照してください。