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