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中文网其他相关文章!