首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqladmin和password()函数之间的散列值

mysqladmin和password()函数之间的散列值
EN

Stack Overflow用户
提问于 2011-11-10 06:19:01
回答 1查看 346关注 0票数 0

我在x86_64 linux服务器上编译并安装了MySQL5.1.59。

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

代码语言:javascript
复制
$ bin/mysqladmin -uroot password 'somepass'
$ bin/mysql -uroot -p 'somepass'
mysql>

登录成功!

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

代码语言:javascript
复制
mysql> grant all privileges on mydb.* to 'myuser'@'localhost' identified by 'somepass';
mysql> flush privileges;

密码与root完全相同。

但在我询问之后:

代码语言:javascript
复制
mysql> select host,user,password from mysql.user;

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

顺便说一句,如果我以这种方式更改根密码:

代码语言:javascript
复制
mysql> update mysql.user set password=PASSWORD('somepass') where user='root';
mysql> flush privileges;

那么我就不能再用root登录mysql了:

代码语言:javascript
复制
$ bin/mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

这在我的其他服务器上从来没有发生过。这个问题似乎与操作系统有关。散列的值怎么会彼此不同呢?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-10 06:30:58

虽然MySQL文档在这方面有点稀疏,但我认为它是在对密码进行盐碱化。

为了安全起见,名为"salt“的随机值通常在密码被散列之前添加到密码中。对于salt,相同密码上的散列结果是非常不同的。

维基百科:

使用盐渍密码提供的好处是,如果salt足够大,则对存储的值进行查找表辅助字典攻击是不切实际的。也就是说,攻击者将无法创建一个由哈希值(密码+ salt)组成的预先计算的查找表(即彩虹表),因为这会占用太多的空间。简单的字典攻击仍然是非常可能的,尽管速度要慢得多,因为它不能预先计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8075670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档