es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de autenticación al acceder a MySQL desde PHP

Estoy trasladando una aplicación antigua entre dos servidores Windows (ver datos a continuación).

Me aseguro de tener php.ini, my.ini, httpd.conf y httpd-vhosts.conf alineados.

Sé que la versión de PHP es demasiado antigua y aún peor, el código utiliza mysql_connect.

En el antiguo servidor, la instrucción mysql_connect(‘localhost’, ‘root’, ‘mi_contraseña’); funciona sin problemas.

En el nuevo servidor, la misma instrucción da como resultado “Acceso denegado para el usuario ‘root’@’localhost’ (usando contraseña: SÍ)”.

Si llamo a la función sin contraseña, la conexión funciona.

Accedo a phpmyadmin con root y mi_contraseña.

El usuario root tiene contraseña SÍ, privilegios globales TODOS LOS PRIVILEGIOS, concesión SÍ.

¿Alguien tiene alguna sugerencia (además de actualizar PHP y la biblioteca de conexión) de dónde buscar el problema?

Configuración del sistema:

Servidor antiguo

  • Windows Server 2008 R2 Enterprise
  • Apache 2.4.23
  • PHP 5.6.25
  • MySQL 5.7.14

Servidor nuevo

  • Windows Server 2019 Datacenter
  • Apache 2.4.41
  • PHP 5.6.40
  • MySQL 5.7.28
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema puede ser causado por la contraseña del usuario root de MySQL no configurada correctamente en el nuevo servidor.

    Puedes intentar restablecer la contraseña root en el nuevo servidor y luego actualizar el código para usar la nueva contraseña.

    Para restablecer la contraseña root, puedes seguir estos pasos:

    1. Detén el servicio de MySQL en el nuevo servidor.
    2. Abre el símbolo del sistema como administrador y navega hasta el directorio bin de MySQL (por ejemplo, C:\Program Files\MySQL\MySQL Server 5.7\bin).
    3. Ejecuta el comando mysqld.exe --skip-grant-tables --skip-networking.
    4. Abre una nueva ventana de símbolo del sistema y navega hasta el directorio bin de MySQL.
    5. Ejecuta el comando mysql.exe -u root.
    6. Actualiza la contraseña root con el comando UPDATE mysql.user SET authentication_string=PASSWORD('nueva_contraseña') WHERE User='root';.
    7. Reinicia el servicio de MySQL.

    Después de restablecer la contraseña, actualiza el código para usar la nueva contraseña e intenta conectarte nuevamente. Si esto no resuelve el problema, puede haber otras diferencias de configuración entre los servidores antiguos y nuevos que están causando el problema y será necesario realizar una investigación adicional.

Comments are closed.