2009-10-19 21 views
5

Acabo de actualizar php a 5.3 y ya no puedo conectarme a mi servidor remoto mysql. Obtengo los siguientes errores:Actualizar a php5.3 se rompe al conectar a mysql db

mysqli_connect(): OK packet 6 bytes shorter than expected 
mysqli_connect(): (HY000/2000): mysqlnd cannot connect to MySQL 4.1+ using old authentication 

Parece que esto tiene que ver con el nuevo controlador mysqlnd. ¿Hay alguna manera de obligarlo a usar el antiguo controlador libmysql? Además, volver a php5.2.11 no parece solucionar el problema que parece funcionar para la mayoría de las personas.

Respuesta

1

Bueno, escribí una larga respuesta genial, pero alguien mejor que yo ya la ha respondido. El tldr; de esta respuesta es recompilar su php para su aplicación.

http://news.php.net/php.internals/43535

Ionut G. Stan schrieb:

Advertencia: mysql_connect() [function.mysql-Connect]: paquete OK 6 bytes más corta de lo esperado en {filename} en la línea 18 advertencia: mysql_connect() [function.mysql-connect]: mysqlnd no puede conectar a MySQL 4.1+ mediante la autenticación de edad en {nombre del archivo} en la línea 18

Esto dice todo. No puede usar la autenticación anterior con mysqlnd.

Actualice sus contraseñas de servidor al método de autenticación más reciente y más seguro o recompile PHP con la compatibilidad con libmysql (MySQL Client Library). Comprobar ./configure --ayuda | grep -C3 mysql y http://www.php.net/manual/en/mysql.installation.php.

0

http://dev.mysql.com/doc/refman/5.1/en/old-client.html dice:

restablecer la contraseña de comprobar la validez de 4.1 estilo para cada usuario que necesite utilizar un programa cliente pre-4.1 . Esto se puede hacer usando la sentencia SET PASSWORD y la función OLD_PASSWORD():

mysql> contraseña establecida para -> 'some_user' @ 'some_host' = OLD_PASSWORD ('newpwd'); Alternativamente, utilizar la actualización y privilegios FLUSH:

mysql> SET DE ACTUALIZACIÓN mysql.user contraseña = OLD_PASSWORD ('newpwd') -> donde host = 'some_host' y User = 'some_user'; mysql> FLUSH PRIVILEGIOS; Sustituya la contraseña que desea utilizar para "newpwd" en los ejemplos anteriores de . MySQL no puede decirle a cuál era la contraseña original, así que tendrá que elegir una nueva.

indicar al servidor que utilice el algoritmo de hash mayores contraseña:

iniciar mysqld con las contraseñas --old- opción.

hay muchas más opciones en esta página ....

+0

Creo que la función php language/mysql_connect dejará de admitir la autentificación OLD PASSWORD a partir de php5.3. este es el problema con el que parece estar tratando. el servidor ejecuta php5.2.11 y usa el antiguo cifrado de contraseña de 16 bytes mientras el cliente espera el nuevo cifrado de contraseña de 41 bytes. cuando trato de cambiar la contraseña usando SET PASSWORD, todavía me da una contraseña de 16 bytes – giroy

0

Ver this.

Simplemente restablezca la contraseña del usuario.

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword'); 
+0

ya lo he intentado sin suerte – giroy

+0

esto me dio el mismo cifrado de 16 bytes que ya tenía, no el de 41 bytes que me gustaría – giroy

+0

He leído en algún lado que hay una configuración que haría esto, pero no he tenido suerte encontrándolo – giroy

Cuestiones relacionadas