ハッシュ化されたパスワードを使用してMySQLユーザーのパスワードをリセットする

ハッシュ化されたパスワードを使用してMySQLユーザーのパスワードをリセットする

MySQL サーバーで、次のように間違ったユーザーのパスワードを変更してしまいました。

SET PASSWORD FOR username@'10.1.%' = PASSWORD('newpassword');

パスワードを変更する前に、「SHOW GRANTS FOR username@'10.1.%'」を使用して、表示されるパスワード ハッシュを記録しました。ハッシュされたパスワードを使用して、現在のパスワードを元のパスワードにリセットするにはどうすればよいでしょうか。ハッシュを 'newpassword' として同じ「SET PASSWORD」コマンドを使用してみましたが、ハッシュが文字通り新しいパスワードになったようです。

答え1

MySQL 5.6 を使用しているようです。そのバージョンでのプロセスは次のとおりです。

ユーザー作成時の元のパスワード

create user username@'10.1.%' identified by 'password';
show grants for username@'10.1.%';

出力:

GRANT USAGE ON *.* TO 'username'@'10.1.%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'

パスワードの変更

set password for username@'10.1.%' = PASSWORD('newpassword');
show grants for username@'10.1.%';

出力:

GRANT USAGE ON *.* TO 'username'@'10.1.%' IDENTIFIED BY PASSWORD '*FE4F2D624C07AAEBB979DA5C980D0250C37D8F63'

パスワードを元に戻す

set password for username@'10.1.%' = '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19';
show grants for username@'10.1.%';

出力:

GRANT USAGE ON *.* TO 'username'@'10.1.%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'

ハッシュ化されたパスワード全体を使用しているかどうか確認できますか? 私が見た間違いの 1 つは、先頭のアスタリスクが含まれていないことです。

答え2

チェックするとMySQLのマニュアル次のコマンドを使用できることがわかります。

SET PASSWORD FOR username@'10.1.%' = 'hashed_password';

関連情報