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';