software programacion php5 lenguaje informacion historia descripcion php mysql

programacion - php5



MySQL PHP incompatibilidad (8)

Acabo de tener este problema con un sitio de Wordpress que repentinamente dejó de funcionar y mostró este error.

Encontré una GUI en el Panel de control del sitio web que me permitió cambiar la contraseña del usuario de la base de datos. Intenté cambiarlo a la contraseña actual y esto no estaba permitido porque la contraseña actual no era lo suficientemente segura.

Cambié la contraseña de la base de datos a una nueva, más fuerte y edité mi archivo wp-config.php para tener la nueva contraseña.

¡Esto funcionó!

Así que mi conjetura es que el proveedor de hosting actualizó algo, tal vez MySQL, a una versión que requiere contraseñas más seguras. La solución para mí fue utilizar la GUI de cpanel para cambiar la contraseña del usuario de la base de datos y actualizar wp-config.php para que coincida.

Ok, tal vez haya pasado por alto algo muy simple aquí, pero parece que no puedo resolver esto.

Estoy ejecutando WAMP localmente, pero conectándome a una base de datos MySQL remota. La versión local de PHP es la última versión 5.3.0.

Una de las bases de datos remotas, siendo la versión 5.0.45 funciona bien. Sin embargo, la otra base de datos remota a la que estoy intentando conectar, que es la versión 5.0.22, produce el siguiente error antes de morir:

Advertencia: mysql_connect () [function.mysql-connect]: OK paquete 6 bytes más corto de lo esperado. PID = 5880 en ...

Advertencia: mysql_connect () [function.mysql-connect]: mysqlnd no puede conectarse a MySQL 4.1+ usando la autenticación antigua en ...

WTF?

ACTUALIZAR:

Revertir a PHP 5.2. * Es decir, cualquier valor inferior a 5.3.0 resuelve el problema por completo. Mientras no esté ejecutando 5.3.0 puedo conectarme a ambas bases de datos. No estoy seguro de cuál es la explicación para esta rareza.


Como el usuario Evernoob dijo anteriormente:

"Volver a PHP 5.2. * Es decir, cualquier cosa inferior a 5.3.0 resuelve el problema por completo. Mientras no esté ejecutando 5.3.0, puedo conectarme a ambas bases de datos. No estoy seguro de cuál es la explicación para esta rareza"

En el caso de conectarse a una manguera compartida (en nuestro caso, DreamHost), que está usando la opción oldpassword, no pudimos modificar la tabla de usuarios. Estas opciones sugeridas funcionarán en otros escenarios, pero no con el alojamiento web compartido.

De nota, estamos ejecutando WAMP.


He estado tratando de encontrar una solución simple para este problema. Prueba este enfoque. En tipo MySQL

SELECT Host, User, Password FROM mysql.user;

Si su contraseña tiene dieciséis caracteres, esto se debe a que ha utilizado OLD_PASSWORD en su usuario o ha estado ejecutando una versión anterior de MySQL. Para actualizar tipea

UPDATE mysql.user SET Password=PASSWORD(''newpass'') WHERE User=''root'' AND Host=''localhost''; FLUSH PRIVILEGES;

intercambiar root, localhost y newpass para su usuario, host y pass respectivamente. Ahora cuando vuelva a escribir

SELECT Host, User, Password FROM mysql.user;

Tu contraseña debería haber cambiado. Esto me lo arregló.


Mi servidor web tiene diferentes versiones de PHP / MySQL configuradas y para usar una determinada necesito usar la extensión .php correcta, especialmente .php5 Puede que sea algo tan simple como eso.


Su servidor de base de datos está configurado para usar contraseñas antiguas de forma predeterminada. El mensaje de error que recibe es mysqlnd al ver una base de datos que puede admitir la nueva autenticación (más segura) pero se niega a hacerlo. En tal caso, mysqlnd aborta la conexión y se niega a trabajar.

Asegúrese de que su my.cnf no tiene

old-passwords = 1

Después de comentar esa configuración desde my.cnf (o eliminarla de donde más podría estar configurada) y reiniciar su servidor, asegúrese de restablecer su contraseña con el comando que describe VolkerK, de lo contrario no podrá iniciar sesión.


Una solución más simple es eliminar el usuario de la base de datos y crear uno nuevo con el mismo nombre de usuario y contraseña.


Volviendo a PHP 5.2. * Hice el truco! ¡GRACIAS!

Si está utilizando WAMP ... haga clic izquierdo en wamp> php> versión> obtener más>

Seleccione la versión que desee y descargue.

instalar / ejecutar el exe

clic izquierdo en wamp> php> version> PHP 5.2. *

Eso solucionó este problema. No pude ejecutar ninguno de estos comandos SQL sin obtener un error de "comando denegado al usuario ''XXX'' @ ''localhost''". Buen aspecto intentando iniciar sesión como SU ''Root''. Tal vez en un servidor personal, pero no va a suceder en un servidor real.


La cuenta MySQL que está usando probablemente tiene una contraseña antigua de 16 caracteres (hash).
Puede probar eso con un cliente MySQL (como HeidiSQL, el cliente de la consola MySQL o cualquier otro cliente) y una cuenta que tenga acceso al mysql . tabla de user Si el campo Contraseña contiene 16 caracteres, es una contraseña antigua y mysqlnd no puede usarla para conectarse al servidor MySQL.
Puede establecer una nueva contraseña para ese usuario con

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

ver dev_mysql_set_password

editar:
También debe verificar si el servidor está configurado para usar / crear contraseñas antiguas de forma predeterminada .

edit2:
Por favor, ejecute la consulta

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

en el servidor 5.0.22 (el que está "fallando"). Reemplace el username de username por la cuenta que está usando en mysql_connect ().
¿Qué es lo que vuelve?