如何解密MySQL密码

时间:2011-04-13 19:53:08

标签: mysql

创建我公司使用的平台的开发人员不再适合我们,我不知道如何从自定义PHP应用程序中检索密码

当我查看PHPmyAdmin时,密码被密封(例如* 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19)

如何更改或检索这些?

7 个答案:

答案 0 :(得分:15)

如果使用了正确的加密方法,则无法轻松检索它们。

只需使用新密码重置它们。

修改:字符串看起来像是在使用PASSWORD()

UPDATE user SET password = PASSWORD("newpassword");

答案 1 :(得分:13)

  

如何解密MySQL密码

你真的不能因为它们是经过哈希处理而没有加密。

这是当前MySQL使用的PASSWORD函数的本质。您可以从sql终端执行它:

mysql> SELECT SHA1(UNHEX(SHA1("password")));

+------------------------------------------+
| SHA1(UNHEX(SHA1("password")))            |
+------------------------------------------+
| 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+------------------------------------------+
1 row in set (0.00 sec)

  

如何更改或检索这些?

如果您在登录debian或ubuntu系统时遇到问题,请先尝试一下(感谢tohuwawohu https://askubuntu.com/questions/120718/cant-log-to-mysql):

$ sudo cat /etc/mysql/debian.conf | grep -i password
...
password: QWERTY12345...

然后,使用debian维护用户登录:

$ mysql -u debian-sys-maint -p
password:

最后,更改用户密码:

mysql> UPDATE mysql.user SET Password=PASSWORD('new password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit;

  

当我查看PHPmyAdmin时,密码是加密的

相关,如果您需要转储用户数据库以获取相关信息,请尝试:

mysql> SELECT User,Host,Password FROM mysql.user;
+------------------+-----------+----------------------+
| User             | Host      | Password             |
+------------------+-----------+----------------------+
| root             | localhost | *0123456789ABCDEF... |
| root             | 127.0.0.1 | *0123456789ABCDEF... |
| root             | ::1       | *0123456789ABCDEF... |
| debian-sys-maint | localhost | *ABCDEF0123456789... |
+------------------+-----------+----------------------+

是的,这些密码是 NOT 腌制的。因此,攻击者可以预先构建表并将其应用于所有MySQL安装。此外,攻击者可以了解哪些用户拥有相同的密码。

有人说,mySQL的人不遵循最佳做法。约翰史蒂文在OWASP的Password Storage Cheat Sheet上做了一篇关于密码存储最佳实践的优秀论文。为了公平对待MySQL人员,他们可能会因为架构,设计或实现方面的痛点(我根本不知道)而这样做。


如果您使用PASSWORDUPDATE命令,但更改无效,请参阅http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html。即使该页面被命名为“重置权限”,它的确如何更改密码。 (它令人迷惑的MySQL密码更改程序如此破碎,你必须跳过箍,但它就​​是这样)。

答案 2 :(得分:6)

散列是一个单向过程,但是使用密码列表可以重新生成散列并与存储的散列进行比较以“破解”密码。

此网站https://crackstation.net/尝试为您执行此操作 - 运行密码列表并根据您的哈希值告诉您明文密码。

答案 3 :(得分:4)

幸运的是,如果原始开发者有任何好处,您将无法获得纯文本。我说“运气”,否则你可能有一个不安全的系统。

对于管理员密码,因为您拥有代码,您应该能够从已知的纯文本创建散列密码,以便您可以控制应用程序。遵循原始开发人员使用的算法。

如果他们没有腌制和散列,那么请确保将其作为“最佳实践”

应用

答案 4 :(得分:3)

只需将其更改为password('yourpassword')

即可

答案 5 :(得分:0)

您无法在mysql中解密密码,因为密码是使用md5 哈希算法进行哈希处理的,该算法不是编码算法。

答案 6 :(得分:0)

从linux服务器上最好的方式

sudo mysql --defaults-file=/etc/mysql/debian.cnf -e 'use mysql;UPDATE user SET password=PASSWORD("snippetbucket-technologies") WHERE user="root";FLUSH PRIVILEGES;'

这种方式适用于任何Linux服务器,我对Debian和Ubuntu 100%肯定你赢了。