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

Cómo solucionar el error 'Access denied for user' en MySQL (PrestaShop y WordPress)

Actualizado el 31 de enero de 2026

¡Hola! Si estás leyendo esto, probablemente te has topado con el temido error "Access denied for user" mientras intentabas entrar a la base de datos de tu tienda PrestaShop o tu blog WordPress.

No te preocupes. Es uno de los errores más comunes en el mundo del hosting y, casi siempre, tiene una solución sencilla. Este mensaje no significa que hayas perdido tus datos, sino que algo no cuadra entre las credenciales de acceso y los permisos del servidor.

En esta guía extensa y paso a paso, vamos a desglosar qué significa este error, por qué ocurre y, lo más importante, cómo solucionarlo tanto en WordPress como en PrestaShop. Vamos a ello.

¿Qué significa exactamente "Access denied for user"?

Cuando ves un mensaje como Access denied for user 'usuario'@'localhost' (using password: YES) o Access denied for user 'usuario'@'localhost' (using password: NO), el servidor de bases de datos MySQL te está diciendo que ha recibido una solicitud de conexión, pero ha tenido que rechazarla.

Vamos a traducirlo: es como si intentaras entrar a tu casa con una llave equivocada o intentaras abrir el portal de tu vecino. El sistema de seguridad (MySQL) te dice "no te conozco o no tienes permiso para pasar".

Dentro de este error, hay tres culpables principales que debes investigar:

  1. El nombre de usuario es incorrecto (no existe en el sistema).
  2. La contraseña es incorrecta (no coincide con la del usuario).
  3. Los permisos son insuficientes (el usuario existe, pero no tiene derecho a acceder a esa base de datos concreta desde ese servidor).

Primeros pasos: Diagnóstico rápido (antes de tocar nada)

Antes de ponernos a modificar archivos o paneles de control, vamos a hacer una pequeña prueba para saber si el problema es del código o de las credenciales.

1. Comprueba el archivo de configuración

Tanto WordPress como PrestaShop guardan los datos de conexión a la base de datos en un archivo de texto plano. Es el primer lugar donde debemos mirar.

Para WordPress: wp-config.php

Este archivo está en la raíz de tu instalación (normalmente en public_html). Ábrelo con un editor de texto (como el Bloc de notas o el editor de archivos de tu hosting) y busca las líneas que empiezan por DB_NAME, DB_USER, DB_PASSWORD y DB_HOST.

// ** Ajustes de MySQL ** //
define( 'DB_NAME', 'nombre_base_datos' );
define( 'DB_USER', 'nombre_usuario' );
define( 'DB_PASSWORD', 'contraseña_secreta' );
define( 'DB_HOST', 'localhost' );

Para PrestaShop: parameters.php

PrestaShop guarda esta información en una ruta más profunda: /config/parameters.php. Abre ese archivo y busca los parámetros database_host, database_name, database_user y database_password.

'parameters' => array(
    'database_host' => 'localhost',
    'database_name' => 'nombre_base_datos',
    'database_user' => 'nombre_usuario',
    'database_password' => 'contraseña_secreta',
)

[INFO] Anota estos cuatro datos en un papel o en un bloc de notas. Los vas a necesitar para el siguiente paso.

2. La prueba del "algodón": phpMyAdmin

Ahora vamos a comprobar si esas credenciales son válidas por sí solas, sin depender de WordPress o PrestaShop.

  1. Entra en el panel de control de tu hosting (cPanel, Plesk, Syspanel...).
  2. Busca el icono de phpMyAdmin (o "Bases de datos MySQL").
  3. En la pantalla de inicio de phpMyAdmin, verás un formulario para iniciar sesión manualmente. Ignora la opción de "entrar sin contraseña".
  4. Introduce exactamente el nombre de usuario y la contraseña que has anotado del archivo de configuración. En el campo "Servidor" deja localhost.
  5. Pulsa "Continuar".

¿Qué ha pasado?

  • Si entras sin problemas: El problema no es de contraseña. Es de permisos o de que el archivo de configuración está mal escrito (quizás tiene un espacio de más).
  • Si te da el mismo error: El problema es que la contraseña es incorrecta o el usuario no existe. Vamos a solucionarlo en la siguiente sección.

Cómo solucionar el error "Access denied" paso a paso

Aquí tienes las soluciones más efectivas, ordenadas de la más fácil a la más compleja.

Solución 1: Restablecer la contraseña desde el panel de control (La más común)

Esta es la solución estrella para el 80% de los casos. Si has cambiado la contraseña recientemente, o si has restaurado una copia de seguridad de un sitio antiguo, es muy probable que el archivo de configuración tenga una contraseña obsoleta.

  1. Ve a tu panel de control de hosting (cPanel, Plesk, Syspanel, etc.).
  2. Busca la sección de "Bases de datos" o "MySQL Databases".
  3. Encontrarás una lista de tus bases de datos y los usuarios asociados a ellas.
  4. Busca el usuario que aparece en tu archivo de configuración (DB_USER en WordPress o database_user en PrestaShop).
  5. Haz clic en "Cambiar contraseña" (o "Change Password").
  6. Introduce una contraseña nueva y segura. IMPORTANTE: Anótala bien porque la necesitarás en el siguiente paso.
  7. Guarda los cambios.
  8. Ahora, edita tu archivo wp-config.php o parameters.php y reemplaza la contraseña antigua por la nueva que acabas de crear.

[TIP] Para generar una contraseña segura, usa el generador de contraseñas que incluye el propio panel de control. Evita usar caracteres raros como $ o ' porque pueden dar problemas al interpretarse en el código PHP.

Solución 2: Revisar los permisos del usuario (Grants)

A veces la contraseña es correcta, pero el usuario no tiene "permiso" para trabajar con esa base de datos en concreto. Esto es como tener la llave de un coche, pero sin el permiso de conducir.

  1. Vuelve a la sección de "MySQL Databases" en tu panel de control.
  2. Busca la opción de "Usuarios MySQL" (MySQL Users) o "Añadir usuario a base de datos" (Add User to Database).
  3. Asegúrate de que el usuario que usas está vinculado (asociado) a la base de datos que quieres usar.
  4. Si no lo está, añádelo. Si ya lo está, puede que necesites otorgar "TODOS LOS PRIVILEGIOS" (ALL PRIVILEGES).
  5. Marca la casilla de "ALL PRIVILEGES" y guarda.

[WARNING] Aunque otorgar "ALL PRIVILEGES" es lo más cómodo, por seguridad, en un entorno de producción es mejor limitar permisos. Pero para solucionar el error, esta es la vía rápida. Si después quieres afinar, puedes quitar permisos como DROP o DELETE para mayor seguridad.

Solución 3: El problema del Host (localhost vs. IP)

A veces el error dice algo como Access denied for user 'usuario'@'mi-ip-remota'. Esto significa que estás conectando desde una IP que no está en la lista blanca del servidor MySQL.

  1. En tu panel de control, busca la sección de "Remote MySQL" (MySQL remoto).
  2. Si estás intentando conectar desde tu casa a un servidor externo (por ejemplo, usando un programa como Navicat o Workbench), necesitas añadir tu IP pública a la lista.
  3. Si solo usas WordPress o PrestaShop alojados en el mismo servidor, el host debe ser localhost o 127.0.0.1. Cambia el valor en el archivo de configuración si fuera necesario.

Solución 4: Revisar el archivo de configuración (Espacios y comillas)

Es muy fácil cometer un error tipográfico. Asegúrate de que no hay espacios en blanco alrededor de las contraseñas o nombres de usuario.

  • Mal: define('DB_PASSWORD', 'mi_clave '); (Hay un espacio al final).
  • Bien: define('DB_PASSWORD', 'mi_clave');

También verifica que las comillas sean simples (') y no dobles ("), aunque ambas funcionan en PHP, es mejor ser consistente. Y, por supuesto, revisa que no haya caracteres invisibles copiados de un documento de Word.


Casos específicos: WordPress y PrestaShop

Aunque el error es el mismo, a veces el contexto cambia la solución.

Errores comunes en WordPress

  • "Error establishing a database connection" (Error al establecer la conexión con la base de datos): Este es el mensaje genérico que muestra WordPress. Casi siempre es el error de "Access denied" disfrazado. Sigue los pasos de la Solución 1 y 2.
  • Después de migrar el sitio: Si acabas de mover tu web a un nuevo hosting, es muy probable que las credenciales hayan cambiado. Actualiza wp-config.php con los nuevos datos.
  • Plugin de caché: Un plugin de caché puede guardar credenciales antiguas. Desactiva todos los plugins renombrando la carpeta /wp-content/plugins a /wp-content/plugins_old temporalmente. Si la web funciona, reactiva uno a uno.

Errores comunes en PrestaShop

  • Error en la instalación: Si estás instalando PrestaShop desde cero y te da el error, significa que los datos que introduces en el asistente de instalación no coinciden con los que has creado en el panel de control.
  • Después de una actualización: A veces, al actualizar PrestaShop, el archivo parameters.php se corrompe o se sobreescribe con datos de prueba. Revisa que los datos son correctos.
  • Caché de PrestaShop: PrestaShop guarda una caché de la configuración en /var/cache. Si has editado el parameters.php, borra el contenido de las carpetas cache y logs (dentro de /var) para forzar que se lea la configuración nueva.

Solución Avanzada: Acceso directo por consola (SSH)

Si eres un poco más atrevido o tu hosting lo permite, puedes intentar acceder por línea de comandos. Esto te dará el error exacto de MySQL.

  1. Conéctate por SSH a tu servidor.
  2. Ejecuta el siguiente comando, sustituyendo usuario y basededatos:
mysql -u usuario -p basededatos
  1. Te pedirá la contraseña. Intenta entrar.
  2. Si el error persiste, ejecuta este comando para cambiar la contraseña directamente desde el servidor (sustituye nueva_clave por una segura):
ALTER USER 'usuario'@'localhost' IDENTIFIED BY 'nueva_clave';
FLUSH PRIVILEGES;

[WARNING] Este método requiere conocimientos de terminal. Si no sabes lo que estás haciendo, es fácil equivocarse y romper algo más. Si no estás seguro, contacta con el soporte de tu hosting.


Cómo evitar este error en el futuro

Prevenir es mejor que curar. Aquí tienes algunos consejos para que el error "Access denied" no vuelva a aparecer.

  1. Usa un gestor de contraseñas: Guarda todas tus contraseñas de bases de datos en un lugar seguro.
  2. Cambia las contraseñas solo desde el panel: Si necesitas cambiar la contraseña de MySQL, hazlo siempre desde el panel de control y actualiza inmediatamente el archivo de configuración de tu CMS.
  3. Haz copias de seguridad de los archivos de configuración: Antes de tocar wp-config.php o parameters.php, descarga una copia a tu ordenador. Así, si algo sale mal, puedes restaurarlo.
  4. Mantén todo actualizado: Tanto WordPress, como PrestaShop, como los plugins, suelen incluir mejoras de seguridad que evitan inyecciones SQL (que a veces se usan para robar contraseñas).
  5. Cuidado con las migraciones: Si mueves tu web, revisa siempre que los archivos de configuración apunten a la nueva base de datos y que las contraseñas se hayan importado correctamente.

Preguntas Frecuentes (FAQ)

¿Por qué me da error si la contraseña es correcta?

Puede que la contraseña sea correcta pero el usuario no tenga permisos sobre esa base de datos específica. Revisa la Solución 2 para otorgar los permisos necesarios.

¿Qué es localhost en el error?

localhost significa que la conexión se realiza desde el mismo servidor donde está alojada la base de datos. Es lo más común en hosting compartido. Si usas un servicio externo, el host será una IP o un nombre de dominio.

¿Puedo cambiar el usuario de la base de datos?

Sí, pero es un proceso delicado. Deberías crear un nuevo usuario, otorgarle permisos sobre tu base de datos y actualizar el archivo de configuración. Es mejor restablecer la contraseña del usuario actual que crear uno nuevo, para no tener que tocar los archivos de nuevo.

Mi hosting usa Syspanel, ¿cómo accedo a las bases de datos?

Si tu hosting utiliza Syspanel (antes conocido como HestiaCP), el acceso al panel de control se realiza a través del puerto 2106 (por ejemplo, https://tudominio.com:2106). Una vez dentro, busca la sección de "Bases de Datos" o "Base de Datos MySQL" en el menú lateral. Allí podrás ver los usuarios, cambiar contraseñas y gestionar permisos de forma visual, igual que en cPanel.

[TIP] En Syspanel, los nombres de usuario y bases de datos suelen llevar un prefijo con el nombre de tu cuenta, por ejemplo usuario_miweb. Asegúrate de incluir ese prefijo completo en tu archivo de configuración.


Conclusión

El error "Access denied for user" en MySQL puede ser frustrante, pero como has visto, es un problema lógico y solucionable. La clave está en verificar las tres patas del banco: usuario, contraseña y permisos.

Empieza siempre por la solución más sencilla (cambiar la contraseña desde el panel) y ve subiendo en complejidad. Si has seguido todos los pasos de esta guía y el error persiste, es muy probable que el problema esté en el servidor, no en tu código. En ese caso, contacta con el soporte técnico de tu proveedor de hosting y diles el mensaje de error exacto que te aparece. Ellos tienen herramientas para revisar los logs de MySQL que nosotros no vemos.

Recuerda: respira, revisa los archivos de configuración y trabaja desde el panel de control. En unos minutos tendrás tu tienda o tu blog funcionando de nuevo. ¡Mucha suerte!

¿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