使用散列密码重置 mysql 用户密码

使用散列密码重置 mysql 用户密码

在mysql服务器上,我犯了一个错误,更改了错误的用户的密码,如下所示:

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

在更改密码之前,我使用了“SHOW GRANTS FOR username@'10.1.%'”并记录了显示的密码哈希值。如何使用哈希密码将当前密码重置回原始密码?我尝试使用相同的“SET PASSWORD”命令,并将哈希值设为“newpassword”,但看起来这实际上将哈希值设为了新密码。

答案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'

您能检查一下是否使用了完整的哈希密码吗?我发现的一个错误是没有包括前导星号。

答案2

如果你检查MySQL 使用手册您将看到您可以使用命令:

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

相关内容