以前に使用したパスワードの再利用を許可しない

MySQL でユーザーのパスワードを設定するときに、以前に設定したことのある同じパスワードは設定できないようにすることができます。ここでは MySQL で以前に使用したパスワードの再利用を許可しない方法について解説します。

(Last modified: )

過去何回分のパスワードを許可しないかを設定する

過去に使用したパスワードと同じパスワードを使用できないように設定する場合に、過去何回分のパスワードを禁止にするのかを設定できます。作成済みのユーザーに対して設定を行うには次の書式を使用します。

ALTER USER user PASSWORD HISTORY N

対象のユーザー( user )のパスワードに関して、新しく設定するパスワードとして過去 N 回分のパスワードは設定することができなくなります。

また新しいユーザーを作成するときに同じ制限を設定する場合は次の書式を使います。

CREATE USER user IDENTIFIED BY 'auth_string' PASSWORD HISTORY N

新しく作成するユーザー( user )のパスワードのパスワードに関して、新しく設定するパスワードとして過去 N 回分のパスワードは設定することができなくなります。

例えば N に 1 を指定した場合、現在設定されているパスワードと同じパスワードを設定することはできなくなります。また N に 2 を設定した場合、現在設定されているパスワードと、一つ前に設定していたパスワードを設定することができなくなります。

それでは過去 1 回分のパスワードの再利用を制限した新しいユーザーを作成してみます。次のように実行してください。

create user mori@localhost identified by 'mori1' password history 1;

過去何回分のパスワードを許可しないかを設定する(1)

作成したユーザーのパスワードを 2 回変更します。この変更は今まで使ったことのないパスワードを設定しているので問題ありません。

alter user mori@localhost identified by 'mori2';
alter user mori@localhost identified by 'mori3';

過去何回分のパスワードを許可しないかを設定する(2)

次にもう一度パスワードを変更しますが、新しいパスワードとして現在設定しているパスワードと同じ mori3 を指定してみます。

alter user mori@localhost identified by 'mori3';

過去何回分のパスワードを許可しないかを設定する(3)

現在と同じパスワードを設定しようとすると Cannot use these credentials for 'ユーザー名' because they contradict the password history policy とエラーが表示されてパスワードの変更を行うことができませんでした。

今回は N に 1 を指定しているので、現在と同じパスワードを再度設定することはできませんが、 1 つ前のパスワードやそれ以前に設定していたパスワードであれば設定することができます。今度は 1 つ前に設定していた mori2 を新しいパスワードとして設定してみます。

alter user mori@localhost identified by 'mori2';

過去何回分のパスワードを許可しないかを設定する(4)

今度は問題なく新しいパスワードを設定することができました。

過去何日分のパスワードを許可しないかを設定する

過去に使用したパスワードと同じパスワードを使用できないように設定する場合に、過去何日分のパスワードを禁止にするのかを設定できます。作成済みのユーザーに対して設定を行うには次の書式を使用します。

ALTER USER user PASSWORD REUSE INTERVAL N DAY

対象のユーザー( user )のパスワードに関して、新しく設定するパスワードとして過去 N 日前までに使用されたことのあるパスワードは設定することができなくなります。

また新しいユーザーを作成するときに同じ制限を設定する場合は次の書式を使います。

CREATE USER user IDENTIFIED BY 'auth_string' PASSWORD REUSE INTERVAL N DAY

新しく作成するユーザー( user )のパスワードのパスワードに関して、新しく設定するパスワードとして過去 N 日前までに使用されたことのあるパスワードは設定することができなくなります。

それでは新しいユーザーを作成し、過去 30 日前までに使用されたことのあるパスワードの再利用を制限してみます。次のように実行してください。

create user sakata@localhost identified by 'sakata1' password reuse interval 30 day;

過去何日分のパスワードを許可しないかを設定する(1)

作成したユーザーのパスワードを変更してみます。現在と同じパスワードを指定して変更します。次のように実行してください。

alter user sakata@localhost identified by 'sakata1';

過去何日分のパスワードを許可しないかを設定する(2)

過去 30 日間に使用されたことのあるパスワードと同じパスワードを設定しようとすると Cannot use these credentials for 'ユーザー名' because they contradict the password history policy とエラーが表示されてパスワードの変更を行うことができませんでした。

-- --

MySQL で以前に使用したパスワードの再利用を許可しない方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

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