MySQL 传输密码使用 password() 进行哈希处理


mysql transfer passwords hashed with password()

>我正在尝试传输一个大型MySQL数据库,该数据库使用用户及其凭据对表进行哈希处理

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

有没有办法将密码()加密字段传输到新服务器,使它们正常工作?谢谢

*编辑*

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

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

我已经在my.cfg MySQL配置中设置了old_passwords=1然后,新版本的mysql将使用旧的密码哈希。但是,我不建议任何人这样做,因为较新的mysql服务器的新哈希方法更好,更安全。可悲的是,我无法做到这一点,因为我在服务器上有 100 多个应用程序

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

您正面临 MySQL password() 函数的兼容性问题,请详细阅读本文:6.1.2.4 MySQL中的密码哈希.

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

SELECT old_password('test')

解决此问题的过程:

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