不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2012-06-07 21:11  分类:MySQL/NoSQL 

今天,一个同事,用客户端可以连接mysql,但是用php函数就连不上了,报如下警告:

Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:554) in path/to/the/file/where/connection/script/is/written/

Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in path/to/the/file/where/connection/script/is/written/

Warning: mysql_connect() [function.mysql-connect]: 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 in path/to/the/file/where/connection/script/is/written/

具体原因我还不是很清楚,跟old密码长度有关?先记录下来,日后研究。解决方法如下:

SET old_passwords = 0;
UPDATE mysql.user SET PASSWORD = PASSWORD( 'blog.snsgou.com' ) WHERE User = 'php-note' LIMIT 1 ;
SELECT LENGTH( PASSWORD ) FROM mysql.user WHERE User = 'php-note';
FLUSH PRIVILEGES ;

PHP连接MySQL测试代码:

<?php
$con = mysql_connect("192.168.3.240:3306","php-note","blog.snsgou.com");
if (!$con)
{
	die('Could not connect: ' . mysql_error());
}
?>

 


 

【后记】

在实际的项目中,服务器的数据库是不允许你改的,所以只能改自己本地的php版本,把php版本降低点,问题也可解决(php5.2.6即可),强烈推荐WampServer集成环境,支持各个PHP版本的切换。WampServer—PHP多版本共存解决方案