我正在尝试传输一个大型MySQL数据库,该数据库使用用户及其凭据散列表
存储在这些表中的用户的密码使用MySQL password()方法存储。将它们转移到新机器后,似乎散列密码不再有效。
有没有办法将password()加密字段传输到新服务器并且它们正常工作?感谢
*编辑*
我确实面临兼容性问题。我的MySQL版本生成了16字节的哈希密码,但我安装的MySQL新版本使用的是新的41字节哈希方法。
但是,我找到了解决方案,
我在my.cfg MySQL配置中设置old_passwords=1
然后,新版本的mysql将使用旧的密码散列。但是,我不建议任何人这样做,因为新的mysql服务器的新哈希方法更好,更安全。遗憾的是,我不能这样做,因为我在服务器上有超过100个应用程序
最佳解决方案由上面的dlyaza提供。
答案 0 :(得分:1)
您正面临MySQL密码()函数的兼容性问题,请详细阅读本文: 6.1.2.4 Password Hashing in MySQL 。
简而言之,MySQL从旧服务器迁移到新服务器时提供old_password()
兼容性。因此,对于新服务器,您可以使用:
SELECT old_password('test')
解决此问题的步骤:
password2
或任何名称。