我有一点困境。我的mysql 4.1.0数据库必须升级(1和1),但似乎应用程序使用PASSWORD()进行哈希。在mysql 5升级PASSWORD()给出了一个完全不同的结果,这样的密码不能被正确读取和验证。
OLD_PASSWORD()似乎没有加密/解密到4.1.0版本,而是更早的4.0版本。
我能做什么?
"出于兼容性考虑,old_passwords系统变量为添加,以使dba和应用程序能够控制散列方法。默认的old_passwords值为0导致散列使用4.1方法(41字节的哈希值),但设置old_passwords=1会导致哈希使用4.1之前的方法。在本例中,PASSWORD()生成16字节值,相当于OLD_PASSWORD()"
- http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html
我建议强制每个人创建一个新密码,通过电子邮件和随机密钥进行验证,然后用一种好的方法存储新密码(使用PHPass或至少bcrypt with salt)。