🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo solucionar el error 'Access denied for user' en MySQL

Actualizado el 7 de septiembre de 2025

¡Hola! Soy tu técnico de soporte amigable. Si estás viendo el temido error Access denied for user 'usuario'@'localhost' (o access denied mysql), no te preocupes. Es uno de los errores más comunes al trabajar con bases de datos MySQL. En esta guía, te explicaré paso a paso por qué ocurre y, lo más importante, cómo solucionarlo de forma clara y sencilla.

Este artículo está pensado para cualquier persona, incluso si no tienes experiencia técnica. Vamos a resolver juntos este problema de error mysql acceso denegado.


¿Qué significa el error "Access denied for user"?

Cuando ves un mensaje como ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES), significa que MySQL está rechazando tu conexión. Básicamente, el sistema de autenticación de MySQL no reconoce las credenciales (usuario y contraseña) que estás proporcionando.

Las causas más comunes son:

  • Contraseña incorrecta. Es el motivo más frecuente. Puede que hayas cambiado la contraseña, la hayas olvidado o que el archivo de configuración tenga una contraseña diferente.
  • Usuario no existe o no tiene permisos. El usuario que intentas usar no está creado en MySQL o no tiene permisos para conectarse desde el host que estás usando (por ejemplo, localhost).
  • Problemas con el plugin de autenticación. En versiones modernas de MySQL (8.0+), el plugin por defecto cambió a caching_sha2_password, que puede no ser compatible con clientes antiguos o con algunas herramientas como PHP (usada en paneles como Syspanel).
  • Configuración incorrecta en el archivo de conexión. En aplicaciones web, el error puede venir porque el archivo de configuración (como wp-config.php en WordPress) tiene datos incorrectos.
  • El servicio MySQL no está corriendo. Aunque es menos común, a veces el servicio no se ha iniciado correctamente.

Paso 1: Lo primero, verifica el servicio MySQL

Antes de hacer cambios complejos, asegúrate de que MySQL esté funcionando. Si el servicio no está activo, no podrás conectarte.

En sistemas Linux (la mayoría de servidores compartidos o VPS)

Abre una terminal (o usa el acceso SSH que te haya proporcionado tu hosting). Luego ejecuta:

sudo systemctl status mysql

Si ves un mensaje como Active: active (running), está bien. Si no, inícialo:

sudo systemctl start mysql

En Syspanel (HestiaCP)

Si usas Syspanel (recuerda que el acceso es por el puerto 2106), puedes reiniciar MySQL desde el panel:

  1. Accede a Syspanel: https://tu-dominio.com:2106
  2. Ve a Servidores > Servicios.
  3. Busca MySQL y haz clic en el botón de reinicio (icono de recargar).

Paso 2: Solucionar el error con el usuario "root"

El usuario root es el superusuario de MySQL. Si el error es con este usuario, sigue estos pasos.

Opción A: Resetear la contraseña de root (método seguro)

Este método funciona en la mayoría de los casos, incluso si olvidaste la contraseña.

  1. Detén el servicio MySQL:

    sudo systemctl stop mysql
    
  2. Inicia MySQL en modo seguro (sin verificar permisos):

    sudo mysqld_safe --skip-grant-tables &
    

    [INFO] Este comando arranca MySQL saltándose la verificación de usuarios, permitiéndote acceder sin contraseña.

  3. Conéctate a MySQL sin contraseña:

    mysql -u root
    

    Deberías entrar directamente al shell de MySQL (verás mysql>).

  4. Ahora, restablece la contraseña del usuario root. Dentro del shell, ejecuta estos comandos uno por uno (no olvides el punto y coma ; al final):

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'TuNuevaContraseñaSegura';
    FLUSH PRIVILEGES;
    EXIT;
    

    [WARNING] Usa una contraseña segura. Evita contraseñas como 123456 o admin. Una buena práctica es usar mayúsculas, minúsculas, números y símbolos.

  5. Detén el modo seguro y reinicia MySQL normalmente:

    sudo killall mysqld
    sudo systemctl start mysql
    
  6. Prueba la conexión:

    mysql -u root -p
    

    Te pedirá la nueva contraseña. Si todo va bien, ¡ya estás dentro!

Opción B: Si el método anterior no funciona (MySQL 8.0+)

En MySQL 8.0, el comando ALTER USER puede fallar si el plugin de autenticación no es el correcto. Prueba esto:

  1. Sigue los pasos 1 a 3 de la Opción A.

  2. Dentro del shell de MySQL, ejecuta:

    USE mysql;
    UPDATE user SET authentication_string='' WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;
    
  3. Detén el modo seguro y reinicia MySQL (paso 5 de la Opción A).

  4. Ahora conéctate sin contraseña:

    mysql -u root
    
  5. Una vez dentro, establece una nueva contraseña:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'TuNuevaContraseñaSegura';
    FLUSH PRIVILEGES;
    EXIT;
    

Paso 3: Solucionar el error para un usuario específico (no root)

Si el error es con un usuario como mi_usuario, el problema suele ser de permisos o de contraseña.

1. Verifica que el usuario existe y tiene permisos

Conéctate a MySQL como root (usando la contraseña que acabas de restablecer) y ejecuta:

SELECT User, Host FROM mysql.user;

Esto mostrará todos los usuarios. Si tu usuario no aparece, créalo:

CREATE USER 'mi_usuario'@'localhost' IDENTIFIED BY 'su_contraseña';

Luego, dale permisos a la base de datos que necesita:

GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'mi_usuario'@'localhost';
FLUSH PRIVILEGES;

2. Cambiar la contraseña del usuario

Si el usuario existe pero la contraseña es incorrecta, cámbiala:

ALTER USER 'mi_usuario'@'localhost' IDENTIFIED BY 'nueva_contraseña';
FLUSH PRIVILEGES;

3. Problemas con el plugin de autenticación (MySQL 8.0+)

Si tu aplicación (por ejemplo, WordPress o PHPMyAdmin) te da error incluso con la contraseña correcta, es probable que el plugin caching_sha2_password no sea compatible. Para solucionarlo, cambia el plugin a mysql_native_password:

ALTER USER 'mi_usuario'@'localhost' IDENTIFIED WITH mysql_native_password BY 'su_contraseña';
FLUSH PRIVILEGES;

[TIP] Si tu usuario necesita conectarse desde otro servidor (no localhost), reemplaza 'localhost' por '%' (cualquier host) o la IP específica, por ejemplo: 'mi_usuario'@'192.168.1.100'.


Paso 4: Revisa los archivos de configuración de tu aplicación

A veces el error no está en MySQL, sino en cómo tu aplicación intenta conectarse. Si usas WordPress, busca el archivo wp-config.php en la raíz de tu sitio. Si usas Syspanel, puedes editarlo desde el panel de archivos.

Busca estas líneas:

define('DB_NAME', 'nombre_base_datos');
define('DB_USER', 'nombre_usuario');
define('DB_PASSWORD', 'contraseña');
define('DB_HOST', 'localhost');

Asegúrate de que los datos coincidan exactamente con los que has configurado en MySQL. Un error común es tener un espacio o una tilde mal puesta.


Paso 5: Solución rápida para Syspanel (HestiaCP)

Si usas Syspanel (puerto 2106), el error puede aparecer al intentar acceder a phpMyAdmin o al instalar una aplicación. Aquí tienes una solución específica:

  1. Accede a Syspanel: https://tu-dominio.com:2106.
  2. Ve a Bases de Datos.
  3. Busca la base de datos problemática y haz clic en Editar (icono de lápiz).
  4. Allí podrás cambiar el usuario y la contraseña asociados a esa base de datos. Cambia la contraseña por una nueva y guarda.
  5. Luego, actualiza el archivo de configuración de tu aplicación (como wp-config.php) con la nueva contraseña.

[INFO] Syspanel crea automáticamente un usuario por cada base de datos. Si borraste el usuario manualmente, puedes crear uno nuevo desde el mismo panel y asignarlo a la base de datos.


Preguntas Frecuentes (FAQ)

¿Por qué aparece "Access denied for user 'root'@'localhost' (using password: YES)" aunque estoy seguro de que la contraseña es correcta?

Esto puede deberse a que el plugin de autenticación de MySQL 8.0 no es compatible con tu cliente. Prueba a cambiar el plugin como expliqué en el Paso 3, sección 3.

¿Cómo puedo saber si el error es de MySQL o de mi aplicación?

Intenta conectarte directamente desde la terminal con el comando mysql -u usuario -p. Si funciona, el problema está en la configuración de tu aplicación. Si no funciona, el problema es de MySQL.

¿Puedo perder datos al resetear la contraseña de root?

No, resetear la contraseña de root no afecta a tus bases de datos ni a los datos. Solo cambia la clave de acceso del usuario administrador.

¿Qué hago si no tengo acceso SSH al servidor?

Si no puedes acceder por terminal, contacta con tu proveedor de hosting. Ellos pueden resetear la contraseña de MySQL por ti. Si usas Syspanel, puedes intentar cambiar la contraseña desde el panel como se indicó en el Paso 5.

¿El error "Access denied" puede deberse a un firewall?

Sí, pero es poco común. Si el firewall bloquea el puerto 3306 (puerto por defecto de MySQL), no podrás conectarte desde fuera. Pero si estás en localhost, el firewall no debería afectar.


Resumen: Checklist rápida para solucionar el error mysql acceso denegado

  1. Verifica que MySQL esté corriendo: sudo systemctl status mysql.
  2. Resetea la contraseña de root si es necesario (Paso 2).
  3. Asegúrate de que el usuario existe y tiene permisos (Paso 3).
  4. Cambia el plugin de autenticación si usas MySQL 8.0+ (Paso 3, sección 3).
  5. Revisa los archivos de configuración de tu aplicación (Paso 4).
  6. Si usas Syspanel, cambia la contraseña desde el panel (Paso 5).

Espero que esta guía te haya sido de gran ayuda. Recuerda que el error access denied mysql es muy común y, por lo general, se soluciona con unos pocos pasos. Si después de seguir todos estos pasos el problema persiste, no dudes en contactar con el soporte de tu hosting. ¡Estamos aquí para ayudarte!

Si te ha gustado este artículo, compártelo con otros que puedan estar pasando por el mismo problema. ¡Hasta la próxima!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel