una paso ejemplo datos crear conexion conectar con como archivo php mysql sql database database-connection

php - paso - Error: mysqlnd no puede conectarse a MySQL 4.1+ usando la antigua autenticación insegura



conexion mysql php 7 (6)

Configure el servidor Mysql de destino para permitir la autenticación insegura antigua.

http://dev.mysql.com/doc/refman/5.0/en/server-options.html#option_mysqld_old-passwords

Simplemente en el archivo my.cnf en el servidor de destino Mysqld comente las contraseñas antiguas.

Tal vez haya una forma de obtener PHP build (o compilarlo usted mismo) que use el modo de autenticación compatible (antiguo).

Estoy teniendo el siguiente error:

Falló la conexión de la base de datos: mysqlnd no puede conectarse a MySQL 4.1+ utilizando la autenticación insegura anterior. Utilice una herramienta de administración para restablecer su contraseña con el comando SET PASSWORD = PASSWORD(''your_existing_password'') .

Esto almacenará un valor hash nuevo y más seguro en mysql.user . Si este usuario se usa en otros scripts ejecutados por PHP 5.2 o my.cnf anteriores, es posible que deba eliminar la my.cnf contraseñas antiguas de su archivo my.cnf

Utilizando PHP 5.3.8 y MySQL 5.5.16 en mi máquina local y mi host (media temple) ejecuta PHP 5.3 MySQL 5.0.51a. La versión en el servidor en vivo es más antigua que la de mi máquina.

¿Cómo soluciono este error y me conecto a MySQL desde mi máquina local?

Sé que hay publicaciones similares a esta, pero las he probado todas y ninguna está funcionando.


Me encontré con este error por primera vez con un db de Media Temple en un servidor grid.

El problema se debió a que usé una contraseña para un usuario de la base de datos que todavía estaba en su formato de contraseña anterior. El nuevo formato requiere más de 10 caracteres, caracteres especiales, un número, etc.

Creé una nueva base de datos de usuario y contraseña en el nuevo formato y funcionó bien.


Tuve el mismo problema al intentar conectarme a mediademple external-db a través de IIS en mi máquina Windows local. La actualización de mi contraseña para el usuario específico de db solucionó el problema de conexión a la base de datos.

Dentro de (mt) Centro de cuentas, simplemente actualice la contraseña. Usé la misma contraseña y resolví todos mis problemas.


Tuve este problema cuando importé una base de datos de una versión anterior de MySQL. El mayor problema: me impedía conectarme a MySQL con mi usuario root, así que tuve que reset the root password siguiendo las instrucciones a continuación:

Después de esto pude aplicar la solución dada anteriormente.

Por ejemplo:

SET PASSWORD FOR ''root''@''localhost'' = PASSWORD(''MyNewPass'');


Tuve un problema en el que las contraseñas antiguas habían sido habilitadas por el servidor de manera predeterminada, por lo que una CONTRATACIÓN DE CONTRASEÑA simple PARA ''some-user'' @ ''%'' = PASSWORD (''XXXX''); no funcionaría (por una razón debida a un software antiguo y un legado al que no voy a entrar ...)

Solución:

SET old_passwords = 0; SET PASSWORD FOR ''some-user''@''%'' = PASSWORD (''XXXX''); FLUSH PRIVILEGES;

Detalles:

Haciendo esto como el usuario conectado

SET Password = PASSWORD(''password'')

Simplemente no funcionó

Ej. Comprobable aquí

SHOW CREATE TABLE `mysql`.`user`;

La contraseña no cambiaría de

| HOST | USER | PASS |

CONTRASEÑA ANTERIOR

| % | some-user | 7fa559aa33d844b4 |

LO QUE QUERÍA, EG NUEVA CONTRASEÑA

| % | some-user | *CF04AECA892176E6C0C8206F965C03374D12F93E |

Así que busqué las variables de contraseñas antiguas.

SHOW VARIABLES; ... old_passwords = ON ...

Básicamente, tuve que configurar var del servidor mysql primero a old_password = OFF, por ejemplo, esto funcionó para mí

SET old_passwords = 0; SET PASSWORD FOR ''some-user''@''%'' = PASSWORD (''XXXX''); FLUSH PRIVILEGES;


  • Eliminar o comentar old_passwords = 1 en my.cnf

Reinicie MySQL. Si no lo hace, MySQL seguirá usando el formato de contraseña anterior, lo que significará que no puede actualizar las contraseñas con la función de hashing PASSWORD () incorporada.

Los hashes de contraseñas antiguas son de 16 caracteres, los nuevos de 41 caracteres.

  • Conéctese a la base de datos y ejecute la siguiente consulta:

    SELECT user, Length(`Password`) FROM `mysql`.`user`;

Esto le mostrará qué contraseñas están en el formato antiguo, por ejemplo:

+----------+--------------------+ | user | Length(`Password`) | +----------+--------------------+ | root | 41 | | root | 16 | | user2 | 16 | | user2 | 16 | +----------+--------------------+

Observe aquí que cada usuario puede tener varias filas (una para cada especificación de host diferente).

Para actualizar la contraseña de cada usuario, ejecute lo siguiente:

UPDATE mysql.user SET Password = PASSWORD(''password'') WHERE user = ''username'';

Finalmente, los privilegios de descarga:

FLUSH PRIVILEGES;

Fuente: Cómo corregir "mysqlnd no se puede conectar a MySQL 4.1+ usando una autenticación antigua" en PHP5.3