認証プラグインを指定してユーザーを作成する

MySQL ではユーザー認証を行うときに認証プラグインを使います。複数の認証プラグインが存在し、 MySQL 8.0.4 以前と以降ではデフォルトで使用される認証プラグインが変更になりました。ここでは MySQL でユーザーを作成する時に使用する認証プラグインに関する設定を行う方法を解説します。

※ MySQL 8.4 では mysql_native_password プラグインは無効となりました。

(Last modified: )

デフォルトの認証プラグインについて

MySQL に接続する時にユーザー認証が行われますが、認証を行う方式として認証プラグインと呼ばれるものを使用します。以前のバージョンの MySQL ではデフォルトで使用していた認証プラグインが mysql_native_password でしたが、 MySQL 8.04 以降は caching_sha2_password に変更となりました。そのためユーザーアカウントを作成する時に明示的に指定しなければデフォルトの caching_sha2_password が認証プラグインとして使用されるようになっています。

また MySQL 8.4 では mysql_native_password はデフォルトで無効となりました。デフォルトの認証プラグインは常に caching_sha2_password が使用されます。

mysql_native_password は MySQL 8.4 ではまだ有効にすることで使用することができますが、 MySQL 8.4 以降のバージョンで mysql_native_password は削除される可能性があります。今後は caching_sha2_password を使用されてください。

※ 「1.4 What Is New in MySQL 8.4 since MySQL 8.0」を参照されてください。

使用されている認証プラグインを確認する

ユーザーを作成したときに、ユーザーで使用されている認証プライグインを確認してみます。次のようにユーザーを作成してみます。

create user honda@localhost identified by 'honda';

認証プラグインを指定してユーザーを作成する(1)

作成したユーザーの認証プラグインの設定を確認してみます。

select user, host, plugin from mysql.user where user = 'honda';

認証プラグインを指定してユーザーを作成する(2)

ユーザーを作成した場合、デフォルトの認証プラグインである caching_sha2_password が使用されていることが確認できました。

MySQL 8.4でmysql_native_passwordを使用する

先に記述した通り MySQL 8.4 では認証プラグインの mysql_native_password はデフォルトで無効となっています。もし MySQL 8.4 で mysql_native_password を使用されたい場合は次の手順で行ってください。

my.ini ファイル(または my.cnf ファイル)を開き [mysqld] グループの mysql_native_password オプションに対して on を設定します。

[mysqld]
mysql_native_password=on

MySQL 8.4でmysql_native_passwordを使用する(1)

my.ini ファイルを保存し、 MySQL を再起動してください。これで mysql_native_password が有効となりました。

次に使用する認証プラグインを指定してユーザーを作成します。書式は次の通りです。

CREATE USER user IDENTIFIED WITH auth_plugin BY 'auth_string'

ユーザー名( user )、パスワード( 'auth_string' )、に加えて使用する認証プラグイン( auth_plugin )を指定します。今回は認証プラグインとして mysql_native_password を指定して次のように実行しました。

create user harada@localhost identified with mysql_native_password by 'harada';

MySQL 8.4でmysql_native_passwordを使用する(4)

作成したユーザーの認証プラグインの設定を確認してみます。

select user, host, plugin from mysql.user where user = 'harada';

MySQL 8.4でmysql_native_passwordを使用する(5)

認証プラグインが指定した mysql_native_password に設定されていることが確認できます。

実際に MySQL へ接続することもできます。

MySQL 8.4でmysql_native_passwordを使用する(6)

このように MySQL 8.4 ではまだ mysql_native_password を利用することができますが、今後削除される可能性が高いことからできるだけ利用されないようにしてください。

-- --

ユーザー認証を行う時に使用される認証プラグインについての解説と、認証プラグインを指定してユーザーを作成する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。