>我正在尝试传输一个大型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')
解决此问题的过程:
- 在表中添加新的
password2
FILE 作为 或任何名称。 - 使用 old_password() 在新服务器上对用户进行身份验证,如果密码有效,则在步骤 1 中创建的字段中保存副本。
- 转换所有用户密码后,您可以正常使用password()。