0. 场景:有时候mysql密码忘记了,需要重置。
1. 查看用户名和哈希过的密码。用户名和密码的映射关系存在mysql自带的数据库"mysql"的user表中
select host, user, password from mysql.user;
笔者在本地得到如下数据,现在是想把root的密码找回:
*为标识作用,具体是要处理后边的F47C37383A5329418143B1B4DE811A97D7D0EF1B
2. mysql是如何将原始密码转变成 F47C37383A5329418143B1B4DE811A97D7D0EF1B 的?
具体是这样做的: concat(’*’,sha1(unhex(sha1(‘design’))))
哈希函数是单向函数,逆向计算不现实,通常可以通过预计算一批字符串与哈希值的映射来做枚举破解【字典、彩虹表】。
推荐这个工具网站,下图是笔者的哈希值直接被破解的情况: https://www.cmd5.com/
3. 参考文档
http://cenalulu.github.io/mysql/myall-about-mysql-password/
https://www.cmd5.com/