我们将数据库迁移到新服务器,但遗憾的是默认设置为old_passwords = 1.
因为我们使用PHP的PASSWORD()来获得某些功能,这些应用程序的新密码,以及新创建的mysql root和其他用户都有旧式密码。
我想回到新式密码,以便迁移之前的用户帐户再次工作,但我也希望新创建的用户能够登录。
阅读http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html似乎> 4.1服务器将处理旧式和新式密码,但我想确认一下我在从my.cnf删除该行之前正确读取该信息,重新启动服务器并最终遇到很多麻烦
答案 0 :(得分:0)
从我所看到的内容非常清楚:
4.1及更高版本的客户端可以使用具有短哈希值或长哈希值的帐户进行身份验证。
但请确保您的所有客户也是4.1或更高版本。否则,如果4.1之前的用户更改了密码,他们将被锁定。
如果没有--old-passwords选项,则会出现以下不良情况 是可能的:
旧客户端连接到具有短密码哈希的帐户。
客户端更改自己的密码。没有--old-passwords,这个 导致该帐户具有长密码哈希值。
下一次旧客户端尝试连接到该帐户时,它 不能,因为该帐户有一个需要的长密码哈希 身份验证期间的新哈希机制。 (一旦帐户有一个 用户表中的长密码哈希,只有4.1和更高版本的客户端可以 对它进行身份验证,因为4.1之前的客户端不太了解 哈希值。)