ユーザー認証に使用する認証プラグインに関する設定を記述する

MySQL ではユーザー認証に使用する認証プラグインを複数の中から選択することができます。ユーザー作成時に明示的に使用する認証プラグインを指定しない場合はデフォルトの認証プラグインが使用されますが、 my.ini ファイルでデフォルトの認証プラグインとして使用される認証プラグインを設定することができます。ここでは MySQL の設定ファイルに対してデフォルトの認証プラグインに関する設定を記述する方法について解説します。

(Last modified: )

デフォルトの認証プラグインを設定する

MySQL 8.0 より前はデフォルトの認証プラグインとして mysql_native_password が利用されてきましたが、 MySQL 8.0 以降は caching_sha2_password に変更となっています。

デフォルトの認証プラグインに任意のプラグインを設定する場合は設定ファイルである my.ini ファイルで設定します。 [mysql] グループで default_authentication_plugin に対して値を設定します。

[mysqld]
default_authentication_plugin=デフォルトの認証プラグイン

default_authentication_plugin オプションに対して値が設定されていない場合は、 caching_sha2_password がデフォルトの認証プラグインとして使用されます。

default_authentication_pluginの初期値

Windows 環境でインストーラー付きで MySQL をインストールした場合、次のような設定画面が表示されました。

デフォルトの認証プラグインを設定する(1)

この画面で「Use Strong Password Encryption for Authentication」を選択した場合、 my.ini ファイルに default_authentication_plugin=caching_sha2_password が設定されます。

[mysqld]
default_authentication_plugin=caching_sha2_password

「Use Legacy Authentication Method」を選択した場合は、 my.ini ファイルに default_authentication_plugin=mysql_native_password が設定されます。

[mysqld]
default_authentication_plugin=mysql_native_password

手動でデフォルトの認証プラグインを変更する場合は、 my.ini ファイルの default_authentication_plugin に対して値を設定してください。

デフォルトの認証プラグインが使用されるか確認する

実際に認証プラグインを指定せずにユーザーを作成し、デフォルトの認証プラグインが使用されるかどうか確認してみます。現在はデフォルトの認証プラグインが caching_sha2_password に設定されています。

それではユーザーを作成します。 MySQL コマンドラインツールから MySQL に接続したあと、次のように実行してください。

create user tanaka@localhost identified by 'tanaka';

利用可能な認証プラグインの一覧を確認する(1)

ユーザーが作成されました。それでは作成されたユーザーの認証プラグインを確認してみます。次のように実行してください。

select user, plugin from mysql.user where user = 'tanaka';

利用可能な認証プラグインの一覧を確認する(2)

作成したユーザーが使用する認証プラグインが caching_sha2_password になっていることが確認できます。

次にデフォルトの認証プラグインを変更してみます。 my.ini ファイルを開き [mysqld] グループの default_authentication_plugin オプションに対して mysql_native_password を設定します。

[mysqld]
default_authentication_plugin=mysql_native_password

my.ini ファイルを保存し、 MySQL を再起動してください。これでデフォルトの認証プラグインが変更されました。

それでは改めてユーザーを作成し、作成したユーザーの認証プラグインを確認します。

create user suzuki@localhost identified by 'suzuki';
select user, plugin from mysql.user where user = 'suzuki';

利用可能な認証プラグインの一覧を確認する(3)

作成したユーザーが使用する認証プラグインが mysql_native_password になっていることが確認できます。

なおデフォルトの認証プラグインをあとから変更しても、すでに作成済みのユーザーの認証プラグインには影響はありません。

利用可能な認証プラグインの一覧を確認する(4)

利用可能な認証プラグインの一覧を確認する

利用可能な認証プラグインの一覧を確認するには、 MySQL コマンドラインツールから MySQL に接続したあと、次のように実行してください。

select plugin_name, plugin_status, plugin_type from information_schema.plugins where plugin_type="authentication";

利用可能な認証プラグインの一覧を確認する(1)

認証プラグインの一覧が表示されました。

-- --

MySQL の設定ファイルに対してデフォルトの認証プラグインに関する設定を記述する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。