mysql传输密码哈希密码()

时间:2014-04-01 10:11:57

标签: php mysql hash

我正在尝试传输一个大型MySQL数据库,该数据库使用用户及其凭据散列表

存储在这些表中的用户的密码使用MySQL password()方法存储。将它们转移到新机器后,似乎散列密码不再有效。

有没有办法将password()加密字段传输到新服务器并且它们正常工作?感谢

*编辑*

我确实面临兼容性问题。我的MySQL版本生成了16字节的哈希密码,但我安装的MySQL新版本使用的是新的41字节哈希方法。

但是,我找到了解决方案,

我在my.cfg MySQL配置中设置old_passwords=1然后,新版本的mysql将使用旧的密码散列。但是,我不建议任何人这样做,因为新的mysql服务器的新哈希方法更好,更安全。遗憾的是,我不能这样做,因为我在服务器上有超过100个应用程序

最佳解决方案由上面的dlyaza提供。

1 个答案:

答案 0 :(得分:1)

您正面临MySQL密码()函数的兼容性问题,请详细阅读本文: 6.1.2.4 Password Hashing in MySQL

简而言之,MySQL从旧服务器迁移到新服务器时提供old_password()兼容性。因此,对于新服务器,您可以使用:

SELECT old_password('test')

解决此问题的步骤:

  1. 在表格中添加新的字段password2或任何名称。
  2. 使用old_password()对新服务器上的用户进行身份验证,如果密码有效,则将副本保存在步骤1中创建的字段中。
  3. 转换完所有用户密码后,您可以正常使用密码()。