gpt4 book ai didi

mysql - mysqladmin 和 password() 函数之间的哈希值不同

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:45 24 4
gpt4 key购买 nike

我在 x86_64 Linux 服务器上编译并安装了 mysql-5.1.59。

首先我在 cli 中设置 root 密码并登录:

$ bin/mysqladmin -uroot password 'somepass'
$ bin/mysql -uroot -p 'somepass'
mysql>

登录成功!

然后我使用SQL语句创建了一个用户:

mysql> grant all privileges on mydb.* to 'myuser'@'localhost' identified by 'somepass';
mysql> flush privileges;

密码与root完全相同。

但是我查询后:

mysql> select host,user,password from mysql.user;

我注意到两个帐户的密码值不相同。我尝试使用 myuser 登录 mysql 但失败。

顺便说一句,如果我这样更改 root 密码:

mysql> update mysql.user set password=PASSWORD('somepass') where user='root';
mysql> flush privileges;

然后我就无法再用root登录mysql了:

$ bin/mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

这在我的其他服务器上从未发生过。看来这个问题与操作系统有关。哈希值之间怎么可能不同呢?谢谢!

最佳答案

虽然 MySQL 文档在这方面有点稀疏,但我认为它对密码进行了加盐处理。

为了安全起见,通常在对密码进行哈希处理之前将一个称为“盐”的随机值添加到密码中。使用盐,相同密码的结果哈希值非常不同。

来自维基百科:

The benefit provided by using a salted password is making a lookup table assisted dictionary attack against the stored values impractical, provided the salt is large enough. That is, an attacker would not be able to create a precomputed lookup table (i.e. a rainbow table) of hashed values (password + salt), because it would take too much space. A simple dictionary attack is still very possible, although much slower since it cannot be precomputed.

关于mysql - mysqladmin 和 password() 函数之间的哈希值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8075670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com