mysql_connect():服务器请求的身份validation方法未知的客户端中

我试图运行PHP 5.4.1(从源代码编译),但是当我尝试连接到MySQL我得到:

Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in 

当使用PHP 5.3 / 5.2时,它正常工作。 任何导致这个问题的想法?

尝试阅读: 链接

MySQL(我认为)在版本4.1中引入了更长的密码哈希,并且你的服务器可能仍然使用它(在你的mysql用户表中检查16字节的密码哈希值)。 较新的版本使用更长的密码哈希值。 你的服务器同时支持,但你的客户端(php)似乎只支持在这个版本(和)上的新的。

如果可能,请使用第一行链接中的解决scheme,然后再次使用新散列设置密码,但要注意,如果使用的是依赖旧密码的其他(旧)客户机,兼容性可能会中断。 也尝试在PHP中寻找MySQL的旧密码支持,但我不确定。

我知道这是一个古老的话题,但是我解决了这个问题,而不必升级/降级任何东西。 基本上我在my.cnf文件中注释掉了old_passwords = 1行,重新启动了mysql,添加/修改了最终得到了16字节散列的用​​户,然后我又回去取消注释old_passwords = 1行,然后重新启动mysql。 所以基本上:

  • 评论old_passwords = 1
  • 重启mysql
  • 添加/修改用户
  • 取消注释old_passwords = 1
  • 重启mysql

所以你有它:1个用户使用新的密码types,而其他用户有他们的旧密码types。 每个人都可以login ;)

试图升级我的mediawiki安装时,我有类似的消息。 我使用Netfirms作为我的托pipe服务提供商,我通过login到控制面板,进入MySQL区域并更改mediawiki正在使用的数据库来解决此问题。 然后,我可以继续进行mediawiki升级。