我正在阅读一些 mysql 内部结构,当通过我的mysql
shell 中的 mysql.user 表时,我得到了
mysql> select * from mysql.user limit 1 \G
*************************** 1. row ***************************
Host: localhost
User: root
Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
密码显然是散列的,但为什么它以星号(星号)开头?
好的,在文档本身中找到了这个。
这是 mysql 4.1 中引入的一项更改,以便可以同时支持 16 个字符的早期密码长度和 40 个字符的新密码长度。密码列的长度为 41 个字节(字符),较新的密码将以强制
*
标识它们开头。从文档中:
除了以星号开头的密码外,这里是PASSWORD()的算法
例子
我很久以前从MySQL PASSWORD() 中的哈希算法中学到了这个算法