MySQL には、ネイティブ認証
(つまり、mysql.user
テーブルの
Password
カラムに格納されたパスワードと照合する認証)
を実装する 2
つのプラグインが含まれています。このセクションでは、ネイティブのパスワードハッシュ化方式を使用して、mysql.user
テーブルと照合する認証が実装された
mysql_native_password
について説明します。古い (4.1 よりも前の)
パスワードハッシュ化方式を使用した認証が実装された
mysql_old_password
については、セクション6.3.8.2「古いネイティブ認証プラグイン」を参照してください。これらのパスワードハッシュ化方式については、セクション6.1.2.4「MySQL でのパスワードハッシュ」を参照してください。
mysql_native_password
ネイティブ認証プラグインには、下位互換性があります。MySQL
5.5.7
よりも古いクライアントでは、認証プラグインがサポートされていませんが、ネイティブ認証プロトコルは使用されます。そのため、MySQL
5.5.7 以上からサーバーに接続できます。
次の表に、サーバー側とクライアント側のプラグイン名を示します。
表 6.8 MySQL ネイティブパスワード認証プラグイン
サーバー側のプラグイン名 | mysql_native_password |
クライアント側のプラグイン名 | mysql_native_password |
ライブラリオブジェクトファイル名 | なし (プラグインは組み込み済み) |
プラグインは、クライアントとサーバーの両方の形式で存在します。
サーバー側のプラグインはサーバーに組み込まれているため、明示的にロードする必要はなく、アンロードしても無効にすることができません。
クライアント側のプラグインは、MySQL 5.5.7 の時点で
libmysqlclient
クライアントライブラリに組み込まれ、そのバージョン以降ではlibmysqlclient
に対してリンクされている任意のプログラムで使用可能です。-
MySQL クライアントプログラムでは、デフォルトで
mysql_native_password
が使用されます。--default-auth
オプションを使用すると、プラグインを明示的に指定できます。shell> mysql --default-auth=mysql_native_password ...
アカウント行にプラグイン名が指定されていない場合、Password
カラム内のパスワードハッシュ値でネイティブのハッシュ化方式と、4.1
よりも前の古いハッシュ化方式のどちらが使用されるのかに応じて、サーバーは
mysql_native_password
と
mysql_old_password
のいずれかのプラグインを使用してアカウントを認証します。クライアントは、アカウント行の
Password
カラム内のパスワードと一致する必要があります。
MySQL のプラガブル認証に関する一般的な情報については、セクション6.3.7「プラガブル認証」を参照してください。