代码改变世界

MySQL身份验证机制的发展

2020-11-02 08:47  abce  阅读(347)  评论(0编辑  收藏  举报

起初,验证机制被称作mysql_old_password,并不是很安全:基于一个哈希函数,密码长度为16个字节。攻击者从存储在mysql.user表的password列的哈希值找出明文密码并不复杂。它已经在MySQL 5.7.5中被删除了。NR

 

MySQL4.1引入了新的方法,mysql_native_password插件,在MySQL5.5中被默认开启。它基于sha-1哈希算法,密码长度为41个字节。一方面,它比mysql_old_password安全很多;另一方面,仍然有弱点,尤其对于太简单的密码,因为相同的密码我们会获得相同的哈希值。同样,在彩虹表中搜索被盗的哈希表以获得相应的明文密码并不那么复杂。

 

MySQL5.6进行了改进,插件sha256_password在哈希算法中增加了一个random salt,唯一性就导致彩虹表不可用了。

 

MySQL8.0中,默认的验证继续增强,和sha256_password同样的哈希算法,此外性能更快:在server端增加了缓存,从而可以快速验证之前连接过的账号。被称作caching_sha2_password,也是默认采用的插件。

 

作为dba,在升级mysql版本的时候,要考虑到身份验证机制的演进.