Error “Fin prematuro de datos” con PHP

Acabo de comenzar a utilizar WAMP para un proyecto de PHP y recibo los siguientes errores relacionados con esta línea de código:

$link=mysql_connect("localhost","myuser","mypas"); 

Leí que tenía que volver a hacer SET SET PASSWORD con mi contraseña anterior, pero aún no funciona después de reiniciar todos los servicios. Estoy usando PHP 5.3.4 y MySQL 5.1.53 ¿Alguna ayuda? GRACIAS

 Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:554) in C:\wamp\www\CDE\includes\baseDatos.php on line 5 Call Stack 1 0.0002 667312 {main}( ) ..\index.php:0 2 0.0008 682416 include( 'C:\wamp\www\CDE\includes\seguridad.php' ) ..\index.php:2 3 0.0010 690984 include( 'C:\wamp\www\CDE\includes\baseDatos.php' ) ..\seguridad.php:2 4 0.0014 692368 mysql_connect ( ) ..\baseDatos.php:5 ( ! ) Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in C:\wamp\www\CDE\includes\baseDatos.php on line 5 Call Stack 1 0.0002 667312 {main}( ) ..\index.php:0 2 0.0008 682416 include( 'C:\wamp\www\CDE\includes\seguridad.php' ) ..\index.php:2 3 0.0010 690984 include( 'C:\wamp\www\CDE\includes\baseDatos.php' ) ..\seguridad.php:2 4 0.0014 692368 mysql_connect ( ) ..\baseDatos.php:5 ( ! ) 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 C:\wamp\www\CDE\includes\baseDatos.php on line 5 Call Stack 1 0.0002 667312 {main}( ) ..\index.php:0 2 0.0008 682416 include( 'C:\wamp\www\CDE\includes\seguridad.php' ) ..\index.php:2 3 0.0010 690984 include( 'C:\wamp\www\CDE\includes\baseDatos.php' ) ..\seguridad.php:2 4 0.0014 692368 mysql_connect ( ) ..\baseDatos.php:5 

Tuve el mismo problema y lo solucioné usando una consulta de ACTUALIZACIÓN como esta:

 UPDATE mysql.user SET Password = PASSWORD('newpwd') WHERE Host = 'some_host' AND User = 'some_user'; 

No sé por qué, pero la contraseña SET no funcionó.

Para estar seguro de que el problema es el que creo que debería hacer esta consulta en la base de datos mysql:

 SELECT `user`.`Password` FROM `user` WHERE `user`.`User` = 'youruser' AND `user`.`Host` = 'yourhost' 

si la contraseña no comienza con un *, el problema es que todavía tiene la inscripción anterior

EDITAR _ Aquí hay una función php para crear una contraseña válida para MYSQL (tomada de aquí ):

 function mysql_41_password($in) { $p=sha1($in,true); $p=sha1($p); return "*".strtoupper($p); } 

Thene puede establecer la contraseña manualmente:

 //newpwd is the passowr dgenerated in php UPDATE mysql.user SET Password = 'newpwd' WHERE Host = 'some_host' AND User = 'some_user'; FLUSH PRIVILEGES; 

El problema anterior ocurre debido a la compatibilidad de versiones entre PHP y MySQL. Sobre todo puede ocurrir durante el acceso remoto de db.

Por favor revise sus versiones de PHP y MySQL.

Mis versiones son PHP-5.3.6 (máquina local) y MySQL 5.1.56 (base de datos en vivo).

Mi MySQL se coloca en el dominio en vivo y guardé mis archivos PHP en la máquina local. Me enfrenté al mismo problema de descanso con contraseña.

Luego reemplazo mi XAMPP con una versión anterior y cambié mi versión de PHP a 5.3.0. Ahora se resolvió el problema anterior y puedo acceder al db en vivo desde local.

Si usa MySQL 4.1 + Pruebe esto

En la línea de comandos de MySQL

mysql> set old_passwords = 0; mysql> set password for 'user'@'some.host.domain' = PASSWORD('new_pass'); mysql> set old_passwords = 1;

Que te estés conectando con localhost sugiere que probablemente no tengas problemas de red.

Primer golpe en las listas de Google 2 posibles causas / remedios.

Este mensaje aparece cuando uno está usando PHP 5.3 … con la base de datos MySQL que se pretende usar con PHP 5.2 … Noté que cuando cambié a otra versión de Uniform Server.

Si no tiene acceso a la base de datos y utiliza principalmente esta conexión remota para fines de desarrollo (como yo), una solución es tener configuraciones con ambas versiones de PHP (actualmente, el último Servidor Uniforme con PHP 5.2 … parece ser 5.6b-Nano con PHP 5.2.13).