当我尝试将 5.0 版本中的所有数据库转储恢复到 5.6 版本时,它已恢复,之后当我尝试重新连接时,出现以下错误
ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled)
..
我尝试在 My.ini 中添加以下行并重新启动服务,但问题一直存在。
skip-grant-tables 以下链接说它是 MYSQL 中的一个错误。
有人对此解决方案有任何修复吗?
在命令行上,使用类似下面的东西,如果你别无选择......
希望这对某人有所帮助,因为这是我从 Linux 连接的问题
如果您的用户帐户的密码使用古老的散列算法,这不是错误。如果您阅读了您发布的链接中提到的错误报告:
http://bugs.mysql.com/bug.php?id=69027
将 5.0 版本的
mysql
模式恢复到 5.6 服务器上无论如何都是一个坏主意,因为 5.6 在某些表和一些全新的表中有额外的列,现在可能会或可能不会丢失,具体取决于您在配置 mysqldump 时的方式创建了转储文件。您可能已经引起了您可能不会立即看到的其他问题。另外,我没有
skip-grant-tables
在文章中看到...但是如果您将该选项正确应用于服务器,则所有身份验证都会被绕过,您应该能够登录并重置密码。如果你使用 MySQL Workbench,你需要勾选这个选项:
这实际上是对先前答案的评论,但太大而无法放入 StackExchange 评论中。
我也遇到了这个问题。所以我用新样式的哈希创建了一个新用户,现在使用这个新用户没有问题。这是我所做的:
我很高兴看到我们的 Password 列已经足够宽,可以容纳新型哈希。(如果它的宽度小于 41 个字符,我可能没有勇气加宽它 :-)
old_passwords
存在ON
显然是问题所在,所以我暂时更改了它:然后我创建了一个新用户:
...并查看了新的哈希:
请注意我的哈希值比其他哈希值大!
为了整洁,我
old_passwords
回到了OFF
. 这可能毫无意义,因为我想不出为什么有人会想使用旧密码创建新用户,但谁知道呢。无论如何:这为我解决了。