Cómo solucionar el error 'Access denied for user' en MySQL (Plesk, cPanel y más)
¿Qué significa el error "Access denied for user" en MySQL?
Cuando intentas conectarte a tu base de datos y aparece el mensaje Access denied for user 'tu_usuario'@'localhost' (using password: YES), no significa que tu web esté rota para siempre. Es un aviso de que MySQL ha rechazado tus credenciales o los permisos de ese usuario no son los correctos.
Este error es uno de los más comunes en el mundo del hosting, y suele aparecer al instalar un CMS, configurar una aplicación o al intentar entrar desde phpMyAdmin.
Las causas más habituales son:
- Contraseña incorrecta (la más frecuente).
- El usuario no tiene permisos sobre la base de datos concreta.
- El usuario solo puede conectarse desde un host específico (por ejemplo,
localhosty tú intentas hacerlo desde otro servidor). - Los datos de conexión en tu archivo de configuración están mal escritos.
- El usuario existe pero está asignado a otra base de datos.
A lo largo de esta guía, vamos a ver cómo solucionar el error access denied for user mysql paso a paso, tanto en Plesk como en cPanel, y también en otros entornos como Syspanel (antes conocido como HestiaCP).
Antes de empezar: identifica el mensaje exacto
El error puede variar ligeramente según el contexto:
Access denied for user 'root'@'localhost'Access denied for user 'admin'@'localhost' (using password: YES)Access denied for user 'usuario'@'%' (using password: NO)
Fíjate bien en el nombre de usuario, el host y si dice using password: YES o NO. Esto te dará pistas sobre si el problema es la contraseña, el host o los permisos.
Solución rápida: verifica tus credenciales
Antes de tocar nada técnico, comprueba lo básico.
1. Revisa el archivo de configuración de tu aplicación
Si usas WordPress, busca el archivo wp-config.php. Si usas otro CMS, busca el archivo de configuración de base de datos (suele llamarse config.php, .env, database.php o similar).
Asegúrate de que estos tres datos son correctos:
- DB_HOST: normalmente
localhosto127.0.0.1. - DB_USER: el nombre exacto del usuario.
- DB_PASSWORD: la contraseña exacta.
Un error típico es copiar la contraseña con espacios extra o con comillas incluidas.
2. Prueba la conexión manualmente
Puedes probar la conexión desde la terminal (si tienes acceso SSH) o desde la herramienta de administración de tu hosting.
Desde SSH, el comando sería:
mysql -u tu_usuario -p tu_base_de_datos
Te pedirá la contraseña. Si te da el mismo error, el problema está en las credenciales o permisos.
Solucionar "Access denied" en cPanel
cPanel es uno de los paneles de control más usados. Sigue estos pasos para solucionar el error mysql access denied.
1. Accede a "Bases de datos MySQL"
Dentro de cPanel, busca la sección Bases de datos y haz clic en Bases de datos MySQL.
2. Verifica que el usuario existe
En la lista de bases de datos, verás los usuarios creados. Comprueba que el usuario que estás usando aparece en la lista.
3. Comprueba que el usuario está asignado a la base de datos
En cPanel, los usuarios se asignan a bases de datos concretas. Si el usuario no está asignado, no podrá acceder.
- En la sección Añadir usuario a la base de datos, selecciona el usuario y la base de datos.
- Haz clic en Añadir.
- Asegúrate de marcar TODOS LOS PRIVILEGIOS o al menos los necesarios (SELECT, INSERT, UPDATE, DELETE).
4. Cambia la contraseña del usuario
Si crees que la contraseña puede estar mal, cámbiala desde cPanel:
- Ve a Bases de datos MySQL.
- Localiza el usuario en la lista.
- Haz clic en Cambiar contraseña.
- Introduce una nueva y guárdala.
- Actualiza el archivo de configuración de tu aplicación con la nueva contraseña.
5. Comprueba el host de conexión
En cPanel, los usuarios suelen tener acceso solo desde localhost. Si tu aplicación se conecta desde otro servidor, tendrás que añadir un host remoto.
- En Bases de datos MySQL, busca Hosts remotos de MySQL.
- Añade la IP del servidor desde el que te conectas.
- Guarda los cambios.
[TIP] Si no sabes qué IP usar, prueba con
%(aunque no es recomendable por seguridad). Significa "cualquier host".
Solucionar "Access denied" en Plesk
Plesk es otro panel muy común, sobre todo en servidores dedicados y VPS. El proceso es similar pero con algunas diferencias.
1. Entra en "Bases de datos"
Desde el panel de Plesk, localiza la sección Bases de datos en el menú de tu dominio o suscripción.
2. Selecciona la base de datos afectada
Haz clic en el nombre de la base de datos donde tienes el problema.
3. Revisa los usuarios asociados
En la página de la base de datos, verás una lista de Usuarios con sus privilegios. Comprueba que el usuario que intenta conectarse está en esa lista.
4. Añade el usuario si no está
Si no aparece, puedes añadirlo:
- Haz clic en Añadir usuario a la base de datos.
- Selecciona el usuario existente o crea uno nuevo.
- Asigna los privilegios necesarios.
5. Cambia la contraseña del usuario
En Plesk, puedes cambiar la contraseña desde Usuarios de bases de datos (en el menú principal de Plesk).
- Localiza el usuario.
- Haz clic en Cambiar contraseña.
- Actualiza tu aplicación con la nueva contraseña.
6. Verifica el host permitido
En Plesk, al crear un usuario, puedes especificar desde qué hosts puede conectarse. Si tu aplicación se conecta desde otro servidor, asegúrate de que el host está permitido.
- En la configuración del usuario, busca Host remoto o Acceso remoto.
- Añade la IP o el nombre de host correspondiente.
[WARNING] Si cambias la contraseña de un usuario de base de datos en Plesk, asegúrate de actualizar todos los archivos de configuración que usen ese usuario. Si no, la web dejará de funcionar.
Solucionar "Access denied" en Syspanel (HestiaCP)
Syspanel es el nuevo nombre de HestiaCP, un panel de control gratuito y muy ligero. Si usas Syspanel, ten en cuenta que el acceso se realiza a través del puerto 2106.
1. Accede a Syspanel
Abre tu navegador y escribe:
https://tu-servidor:2106
Inicia sesión con tu usuario administrador.
2. Ve a la sección de bases de datos
En el menú lateral, busca Bases de datos o Base de datos MySQL.
3. Localiza la base de datos y el usuario
Syspanel muestra una lista con las bases de datos y los usuarios asociados. Haz clic en el usuario que te da problemas.
4. Cambia la contraseña
Desde la vista del usuario, puedes modificar la contraseña. Hazlo y guarda los cambios.
5. Revisa los privilegios
Syspanel suele asignar todos los privilegios por defecto, pero por si acaso, verifica que el usuario tiene permisos de SELECT, INSERT, UPDATE, DELETE sobre la base de datos.
6. Comprueba el host
En Syspanel, los usuarios se crean normalmente con acceso desde localhost. Si necesitas acceso remoto, tendrás que modificar el host permitido.
[INFO] En Syspanel, el puerto de acceso al panel es el 2106. No lo confundas con el puerto de MySQL (que suele ser el 3306).
Solución avanzada: usar MySQL directamente desde la terminal
Si tienes acceso SSH al servidor y los pasos anteriores no funcionan, puedes intentar solucionar el error access denied for user mysql directamente desde la línea de comandos.
1. Accede como root
Conéctate por SSH y ejecuta:
mysql -u root -p
Te pedirá la contraseña de root de MySQL. Si no la sabes, pero tienes acceso de administrador al servidor, puedes intentar:
sudo mysql
En algunos sistemas, el usuario root de MySQL se autentica mediante socket, así que no necesitarás contraseña.
2. Verifica el usuario y sus permisos
Una vez dentro de MySQL, ejecuta:
SELECT user, host FROM mysql.user;
Esto te mostrará una lista de usuarios y desde qué hosts pueden conectarse.
Busca tu usuario. Si aparece como 'usuario'@'localhost', solo podrá conectarse desde el servidor local. Si aparece como 'usuario'@'%', podrá conectarse desde cualquier host.
3. Corrige los permisos
Si el usuario no tiene permisos sobre la base de datos, ejecuta:
GRANT ALL PRIVILEGES ON tu_base_de_datos.* TO 'tu_usuario'@'localhost';
FLUSH PRIVILEGES;
Si necesitas que se conecte desde cualquier host:
GRANT ALL PRIVILEGES ON tu_base_de_datos.* TO 'tu_usuario'@'%';
FLUSH PRIVILEGES;
4. Cambia la contraseña
Si crees que la contraseña está mal, puedes cambiarla:
ALTER USER 'tu_usuario'@'localhost' IDENTIFIED BY 'nueva_contraseña';
FLUSH PRIVILEGES;
[WARNING] Ejecutar comandos SQL directamente es poderoso pero peligroso. Asegúrate de escribir bien el nombre de la base de datos y el usuario. Un error puede dejar tu base de datos inaccesible.
Errores comunes y soluciones rápidas
Error: "Access denied for user 'usuario'@'localhost' (using password: YES)"
Causa: La contraseña no coincide.
Solución: Cambia la contraseña desde el panel de control y actualiza tu aplicación.
Error: "Access denied for user 'usuario'@'localhost' (using password: NO)"
Causa: Tu aplicación intenta conectarse sin contraseña.
Solución: Añade la contraseña en el archivo de configuración.
Error: "Access denied for user 'usuario'@'%' (using password: YES)"
Causa: El usuario no está permitido para conectarse desde el host actual.
Solución: Modifica el host permitido en el panel de control o mediante SQL.
Error: "Access denied for user 'root'@'localhost'"
Causa: La contraseña de root de MySQL es incorrecta o no está configurada.
Solución: Restablece la contraseña de root desde la terminal.
Preguntas frecuentes (FAQ)
¿Qué significa "using password: YES" en el error?
Significa que tu aplicación está enviando una contraseña, pero MySQL la está rechazando. Puede que sea incorrecta o que el usuario no tenga permisos.
¿Puedo conectarme a MySQL desde otro servidor?
Sí, pero necesitas que el usuario esté configurado con el host correcto (por ejemplo, % o la IP del servidor remoto). Además, algunos paneles requieren que añadas el host remoto manualmente.
¿Qué hago si no recuerdo la contraseña de root de MySQL?
Puedes restablecerla desde la terminal con acceso SSH. El método varía según el sistema operativo, pero generalmente implica detener el servicio MySQL y reiniciarlo en modo seguro.
¿Por qué mi web funciona antes y ahora da este error?
Puede que alguien haya cambiado la contraseña, que el usuario haya sido eliminado, o que los permisos se hayan modificado. Revisa el panel de control y el archivo de configuración.
¿Es seguro usar el host % para un usuario de MySQL?
No es recomendable, ya que permite conexiones desde cualquier IP. Es mejor limitar el acceso a IPs concretas si necesitas acceso remoto.
Resumen final
El error access denied for user mysql puede parecer grave, pero en la mayoría de los casos se soluciona en pocos minutos revisando las credenciales y los permisos.
Recuerda los pasos clave:
- Revisa el archivo de configuración de tu aplicación.
- Verifica que el usuario existe y está asignado a la base de datos.
- Comprueba la contraseña y cámbiala si es necesario.
- Ajusta el host permitido si te conectas desde fuera.
Tanto en cPanel, Plesk o Syspanel (puerto 2106), el proceso es similar. Y si todo falla, siempre puedes recurrir a la terminal para corregir permisos directamente en MySQL.
Con estas soluciones, tu base de datos volverá a funcionar sin problemas. Si el error persiste, contacta con tu proveedor de hosting, ya que puede haber un problema a nivel de servidor.
[TIP] Guarda siempre tus contraseñas de base de datos en un gestor de contraseñas. Te evitarás muchos dolores de cabeza.
