首页 >数据库 >mysql教程 >为什么我的 PHP 5.3.0 连接到较旧的 MySQL 数据库失败,并显示'OK packet 6 bytes less than Expected”?

为什么我的 PHP 5.3.0 连接到较旧的 MySQL 数据库失败,并显示'OK packet 6 bytes less than Expected”?

Susan Sarandon
Susan Sarandon原创
2024-11-03 21:30:03701浏览

Why Does My PHP 5.3.0 Connection to an Older MySQL Database Fail with

MySQL PHP 兼容性问题

从运行 PHP 5.3.0 的本地 WAMP 服务器连接到远程 MySQL 数据库时,出现错误:

Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected. PID=5880 in ...
Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication in ...

当连接到较旧的 MySQL 数据库(例如版本 5.0.22)而不是较新的数据库(例如版本 5.0.45)时,此问题通常会出现。

原因:

当使用的 MySQL 帐户具有旧的 16 字符密码哈希时,就会出现问题。

解决方案:

要解决此问题,请重置有问题帐户的密码以使用现代密码格式。在 MySQL 客户端中执行以下查询:

SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword');

其他信息:

要验证密码哈希是否确实是旧的,请在旧密码上运行以下查询MySQL 服务器(版本 5.0.22):

SELECT
  Length(`Password`),
  Substring(`Password`, 1, 1)
FROM
  `mysql`.`user`
WHERE
  `user`='username';

如果“长度”字段返回 16 并且“子字符串”字段返回“*”字符,则密码哈希是旧的。

以上是为什么我的 PHP 5.3.0 连接到较旧的 MySQL 数据库失败,并显示'OK packet 6 bytes less than Expected”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn