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