日常使用MySQL的过程中我们时常会遇到忘记用户密码的情况,面对这种情况我们该如何解决呢?直接更改用户密码?当然这是可行的,但对于有大量运用的数据库直接更改密码牵连很多,所以并不提倡这种方式,哪该怎么做呢?咱是不是可以反向破解密码呢?
答案是肯定的。这篇文章主要就讲述MySQL如何破解密码。
一、获取用户密码
首先,我们知道MySQL中有专门存放用户信息的表,即mysql库中的user表。其中字段user即为用户名,password字段为用户密码,需要注意的是MySQL5.7及之后的版本用的都是authentication_string字段替代以前的password字段。
-- 查询数据库的用户名、密码
select user,password from mysql.user;-- mysql5.7之前
select user,authentication_string from mysql.user;-- mysql5.7及之后
二、MYSQL加密方式
先附上官网的解释:
https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html#function_password
(1)MYSQL 4.1版本之前是MYSQL323加密,生成的是经过加密的16位字符串,用的Old_Password(str)。
例:MYSQL323= 10c886615b135b38
(2)MYSQL 4.1和之后的版本都是MYSQLSHA1加密,生成的是经过加密的40位字符串(前面的*不算在内,后面破解密码也不带这个星号),用的Password(str)。注意:mysql8.0.11移除了password()函数。
例:MYSQLSHA1= *A2EBAE36132928537ADA8E6D1F7C5C5886713CC2
(3)md(str)
计算字符串的MD5 128位校验和。该值以32个十六进制数字的字符串返回,或者 NULL如果参数为 NULL。例如,该返回值可用作哈希键。
返回值是连接字符集中的字符串。如果启用了FIPS模式,则 MD5()返回 NULL。
密码长度查看:
select length(password(‘xxxxxx’));
select length(old_password(‘xxxxx’));
三、破解方式
这里提供一个我用过的在线破解网站:somd5.com
还有很多破解方式,我没有一一测试,可参考https://www.cnblogs.com/ichunqiu/p/7810914.html中的内容。