Php mysqlnd:无法连接到MySQL 5.5.24,旧密码已关闭

Php mysqlnd:无法连接到MySQL 5.5.24,旧密码已关闭,php,mysql,mysqli,mysqlnd,Php,Mysql,Mysqli,Mysqlnd,我有两个环境: Dev:Windows7、PHP5.3.24、Apache 2.2.24 生产:Linux、PHP5.4.10、Apache 两者都连接到远程MySQL 5.5.24服务器。允许远程连接 我将所有mysql函数替换为mysqli。在生产环境中,它连接正常,但在开发环境中出现以下错误: Premature end of data (mysqlnd_wireprotocol.c:553) OK packet 1 bytes shorter than expected mysqln

我有两个环境:

  • Dev:Windows7、PHP5.3.24、Apache 2.2.24
  • 生产:Linux、PHP5.4.10、Apache
两者都连接到远程
MySQL 5.5.24
服务器。允许远程连接

我将所有mysql函数替换为
mysqli
。在生产环境中,它连接正常,但在开发环境中出现以下错误:

Premature end of data (mysqlnd_wireprotocol.c:553)
OK packet 1 bytes shorter than expected
mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file
奇怪的是,MySQL是5.5.24,而不是4.1,并且
旧的密码设置为
关闭。我甚至更改了用户的密码(从主机面板,我没有管理员权限在MySQL中这样做)

我甚至尝试了新版本的PHP(5.4.15),但问题依然存在

我读到的所有引用都指向过时的MySQL服务器(不是这种情况)、旧的密码问题(同样不是这种情况,因为它在生产中连接正常)

更新:


旧的
mysql
函数也不起作用。在将mysql更改为mysqli之前,我使用的是PHP5.2.*版本,它运行正常。因此,我几乎可以肯定,这个问题与捆绑的
mysqlnd
有关

您确定dev连接的密码与prod连接的密码相同吗?当您说
old\u password
时,我猜您的意思是(注意变量名是复数);而且,由于您“没有在MySQL中执行此操作的管理员权限”,我假定您只为会话(而不是全局)设置了该系统变量?如果是,您是如何连接和验证的?您不能按照错误消息中的建议,使用经过身份验证的会话设置密码吗?@Stephan Yes,相同的密码。@eggyal抱歉,是指旧密码(已编辑)<代码>旧密码
是全局设置的(正如我在
显示变量
显示全局变量
语句中看到的,从不为会话设置)。我通过一个SQLGUI客户端(SQLYG)连接,没有问题,但是通过mysqlnd连接使用PHP是不可能的。仅供参考,我报告它可能是一个PHP错误。这里有更多的信息