以前に使用したパスワードの再利用を許可しない
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;
作成したユーザーのパスワードを 2 回変更します。この変更は今まで使ったことのないパスワードを設定しているので問題ありません。
alter user mori@localhost identified by 'mori2';
alter user mori@localhost identified by 'mori3';
次にもう一度パスワードを変更しますが、新しいパスワードとして現在設定しているパスワードと同じ mori3 を指定してみます。
alter user mori@localhost identified by 'mori3';
現在と同じパスワードを設定しようとすると Cannot use these credentials for 'ユーザー名' because they contradict the password history policy とエラーが表示されてパスワードの変更を行うことができませんでした。
今回は N に 1 を指定しているので、現在と同じパスワードを再度設定することはできませんが、 1 つ前のパスワードやそれ以前に設定していたパスワードであれば設定することができます。今度は 1 つ前に設定していた mori2 を新しいパスワードとして設定してみます。
alter user mori@localhost identified by 'mori2';
今度は問題なく新しいパスワードを設定することができました。
過去何日分のパスワードを許可しないかを設定する
過去に使用したパスワードと同じパスワードを使用できないように設定する場合に、過去何日分のパスワードを禁止にするのかを設定できます。作成済みのユーザーに対して設定を行うには次の書式を使用します。
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;
作成したユーザーのパスワードを変更してみます。現在と同じパスワードを指定して変更します。次のように実行してください。
alter user sakata@localhost identified by 'sakata1';
過去 30 日間に使用されたことのあるパスワードと同じパスワードを設定しようとすると Cannot use these credentials for 'ユーザー名' because they contradict the password history policy とエラーが表示されてパスワードの変更を行うことができませんでした。
-- --
MySQL で以前に使用したパスワードの再利用を許可しない方法について解説しました。
( Written by Tatsuo Ikura )
![profile_img](https://www.javadrive.jp/img/face2.png)
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。