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

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

Actualizado el 28 de mayo de 2026

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

Si estás leyendo esto, probablemente te has encontrado con un mensaje parecido a este: "Access denied for user 'usuario'@'localhost' (using password: YES)" o "Error establishing a database connection". No te preocupes, es uno de los errores más comunes en WordPress y PrestaShop, y en el 90% de los casos tiene una solución sencilla.

Este error access denied mysql indica que el servidor MySQL ha rechazado las credenciales que tu sitio web (WordPress o PrestaShop) está utilizando para conectarse a la base de datos. Básicamente, es como si intentaras entrar a tu casa con una llave equivocada: la cerradura (MySQL) no te deja pasar porque la llave (usuario y contraseña) no coincide con lo que espera.

El error acceso denegado mysql puede aparecer de repente, incluso si tu web funcionaba bien hace unas horas. Las causas más habituales son:

  • Cambio de contraseña de la base de datos sin actualizar el archivo de configuración.
  • Usuario de MySQL eliminado o con privilegios revocados.
  • Archivos de configuración corruptos o con datos incorrectos.
  • Problemas con el host de la base de datos (por ejemplo, "localhost" cuando debería ser otra IP).
  • Conflictos después de migrar el sitio a otro servidor o panel de control.

Vamos a solucionarlo paso a paso, sin necesidad de ser un experto. Solo necesitas acceso a tu panel de hosting o a herramientas como phpMyAdmin o Syspanel (si usas HestiaCP, recuerda que en Syspanel el puerto de acceso es el 2106).


Antes de empezar: identifica qué tipo de error tienes

Para no dar palos de ciego, lo primero es saber exactamente qué mensaje te aparece. Según el CMS, el error se muestra de forma diferente:

En WordPress

  • "Error establishing a database connection" (Error al establecer la conexión con la base de datos)
  • "One or more database tables are unavailable. The database may need to be repaired."
  • O directamente la página en blanco.

En PrestaShop

  • "Link to database cannot be established."
  • "Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user..."
  • O un mensaje similar en el back-office al intentar acceder.

Anota el mensaje exacto, especialmente si menciona el usuario y el host. Esto te dará pistas sobre cuál de las soluciones siguientes necesitas aplicar.


Solución 1: Verifica y corrige las credenciales en el archivo de configuración

La causa más frecuente de wordpress error base de datos es que las credenciales guardadas en el archivo de configuración no coinciden con las reales de MySQL. Vamos a revisarlas.

Para WordPress: el archivo wp-config.php

  1. Accede a tu hosting mediante FTP o el administrador de archivos del panel.
  2. Localiza el archivo wp-config.php en la raíz de tu instalación de WordPress.
  3. Ábrelo con un editor de texto plano (nada de Word).
  4. Busca estas líneas:
define('DB_NAME', 'tu_base_de_datos');
define('DB_USER', 'tu_usuario');
define('DB_PASSWORD', 'tu_contraseña');
define('DB_HOST', 'localhost');
  1. Verifica que estos datos son exactamente los mismos que tienes en tu panel de hosting o en phpMyAdmin. Un error típico es que la contraseña contenga caracteres especiales que se hayan escapado mal, o que el host no sea "localhost" sino algo como "mysql.tudominio.com".

  2. Si tienes dudas, entra en tu panel de administración de bases de datos (por ejemplo, Syspanel si tu hosting usa HestiaCP) y comprueba los datos. En Syspanel, recuerda que el acceso es por el puerto 2106.

Para PrestaShop: los archivos parameters.php y settings.inc.php

PrestaShop guarda la configuración en dos archivos posibles, según la versión:

  • app/config/parameters.php (PrestaShop 1.7 y 1.8)
  • config/settings.inc.php (PrestaShop 1.6 y anteriores)

Busca las líneas que definen los parámetros de la base de datos. En parameters.php verás algo como:

'database_host' => 'localhost',
'database_name' => 'tu_base',
'database_user' => 'tu_usuario',
'database_password' => 'tu_contraseña',

Y en settings.inc.php:

define('_DB_SERVER_', 'localhost');
define('_DB_NAME_', 'tu_base');
define('_DB_USER_', 'tu_usuario');
define('_DB_PASSWD_', 'tu_contraseña');

Corrige los valores si es necesario y guarda los cambios. Sube el archivo de nuevo al servidor si lo editaste localmente.

[TIP] Si no recuerdas tu contraseña de MySQL, puedes cambiarla desde phpMyAdmin o desde el panel de tu hosting. En Syspanel, ve a la sección de Bases de Datos y usa la opción "Cambiar contraseña". Luego actualiza el archivo de configuración con la nueva.


Solución 2: Comprueba que el usuario tiene permisos sobre la base de datos

A veces las credenciales son correctas, pero el usuario no tiene privilegios sobre la base de datos. Esto ocurre sobre todo tras migraciones o restauraciones de copias de seguridad.

Cómo revisar los permisos

  1. Entra en phpMyAdmin (normalmente en tudominio.com/phpmyadmin) o en la herramienta de gestión de bases de datos de tu panel.
  2. Si estás en Syspanel, accede por el puerto 2106 y localiza la base de datos afectada.
  3. Haz clic en la pestaña "Privilegios" o "Usuarios".
  4. Busca el usuario que utiliza tu web y verifica que tiene todos los privilegios sobre la base de datos (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP, etc.). Lo más sencillo es marcar "Todos los privilegios" o "Grant all privileges".

Si el usuario no existe o no tiene permisos

Puedes crearlo o asignarle permisos con una consulta SQL. En phpMyAdmin, ve a la pestaña SQL y ejecuta:

GRANT ALL PRIVILEGES ON tu_base_de_datos.* TO 'tu_usuario'@'localhost' IDENTIFIED BY 'tu_contraseña';
FLUSH PRIVILEGES;

[WARNING] Reemplaza tu_base_de_datos, tu_usuario y tu_contraseña por tus datos reales. Asegúrate de que la contraseña no contenga comillas simples sin escapar, ya que romperían la consulta.


Solución 3: El host de la base de datos no es "localhost"

Este es un detalle que se pasa por alto y causa muchos prestashop error mysql. En muchos hostings, especialmente en servidores dedicados o VPS, la base de datos no está en "localhost" sino en una dirección IP o un nombre de servidor distinto.

Cómo saber el host correcto

  1. Revisa la documentación de tu proveedor de hosting o el panel de control.
  2. En Syspanel (si usas HestiaCP), ve a la sección de bases de datos: el host suele aparecer como localhost o como la IP del servidor. Si tienes dudas, contacta con soporte.
  3. Prueba a cambiar DB_HOST en WordPress o database_host en PrestaShop por:
    • 127.0.0.1 (equivalente a localhost pero a veces funciona mejor)
    • La IP del servidor (ej: 192.168.1.10)
    • El nombre del servidor MySQL (ej: mysql.tudominio.com)

Guarda los cambios y prueba de nuevo. A veces simplemente cambiar localhost por 127.0.0.1 resuelve el error acceso denegado mysql porque evita problemas de resolución de nombres.

[INFO] Si tu web usa un CDN o un proxy, el host de la base de datos siempre debe ser el del servidor de origen, no el del CDN.


Solución 4: Repara o restaura la base de datos

Si las credenciales y los permisos están bien, pero el error persiste, puede que la base de datos esté dañada o que alguna tabla haya perdido privilegios.

Para WordPress

WordPress tiene una herramienta de reparación automática. Edita el archivo wp-config.php y añade esta línea justo antes de la línea final require_once:

define('WP_ALLOW_REPAIR', true);

Luego visita tudominio.com/wp-admin/maint/repair.php y haz clic en "Reparar base de datos". Cuando termine, quita esa línea del archivo por seguridad.

Para PrestaShop

Puedes intentar forzar la regeneración de las tablas desde el instalador. Sube una copia limpia del archivo install de PrestaShop, ejecútalo y elige la opción de "reparar" o "actualizar" sin tocar los datos. Es un poco más técnico, así que si no te sientes seguro, ve a la siguiente solución.

Restaurar desde una copia de seguridad

Si tienes una copia de seguridad reciente de la base de datos, puedes restaurarla. Desde phpMyAdmin o Syspanel:

  1. Exporta la base de datos actual (por si acaso).
  2. Importa la copia de seguridad que quieras restaurar.
  3. Verifica que las credenciales del archivo de configuración siguen siendo válidas.

[WARNING] Restaurar una base de datos sobrescribirá los datos actuales. Asegúrate de que la copia que vas a restaurar es la correcta y de tener una copia de seguridad del estado actual.


Solución 5: Revisa los logs de MySQL para más detalles

Si nada de lo anterior funciona, necesitas ver el error exacto que está generando MySQL. Los logs suelen estar en:

  • /var/log/mysql/error.log (en servidores Linux)
  • C:\ProgramData\MySQL\MySQL Server X.X\Data\*.err (en Windows)
  • Desde Syspanel, si tienes acceso al servidor, puedes consultarlos en la sección de Logs.

Busca líneas que contengan "Access denied" y fíjate en el usuario y el host que aparecen. A veces el error indica que el usuario está intentando conectarse desde un host que no está permitido (por ejemplo, 'usuario'@'%' cuando solo está permitido 'usuario'@'localhost').

Solución para el problema de host en MySQL

Si el log muestra que el acceso se intenta desde un host no permitido, puedes crear un usuario con el host correcto o modificar el existente. En phpMyAdmin, ve a la pestaña SQL y ejecuta:

CREATE USER 'tu_usuario'@'%' IDENTIFIED BY 'tu_contraseña';
GRANT ALL PRIVILEGES ON tu_base.* TO 'tu_usuario'@'%';
FLUSH PRIVILEGES;

Pero ten en cuenta que esto permite conexiones desde cualquier host, lo cual es menos seguro. Úsalo solo como solución temporal.


Solución 6: Verifica que el servicio MySQL está activo

Parece obvio, pero a veces el error de acceso denegado aparece porque el servicio MySQL se ha caído o está reiniciándose. Si tu web da error de conexión, comprueba que MySQL está corriendo.

Cómo comprobarlo

  • Si tienes acceso SSH: ejecuta systemctl status mysql (o service mysql status).
  • Si usas Syspanel (HestiaCP), ve al panel y revisa el estado de los servicios. Si MySQL aparece en rojo o detenido, reinícialo desde ahí.
  • En muchos hostings compartidos, no tienes acceso directo al servicio, pero puedes probar a reiniciar el servidor desde el panel de control.

[TIP] Si MySQL se cae con frecuencia, puede ser un problema de memoria o de configuración. Contacta con tu proveedor de hosting si ocurre a menudo.


Solución 7: Regenera el archivo de configuración desde cero

Si has probado todo y sigues con el wordpress error base de datos o el prestashop error mysql, puede que el archivo de configuración esté corrupto. La solución más limpia es regenerarlo.

En WordPress

  1. Descarga una copia limpia de WordPress desde wordpress.org.
  2. Extrae el archivo wp-config-sample.php.
  3. Renómbralo a wp-config.php y súbelo a tu servidor (reemplazando el actual).
  4. Edítalo con tus datos reales de base de datos.
  5. Añade las claves de seguridad (puedes generarlas en https://api.wordpress.org/secret-key/1.1/salt/).

En PrestaShop

  1. Ve a la carpeta app/config/ y renombra parameters.php a parameters.php.bak.
  2. Ejecuta el instalador de PrestaShop (/install) y elige la opción de "Actualizar" o "Reinstalar" sin borrar datos.
  3. El instalador regenerará los archivos de configuración con los datos que introduzcas.

Esta opción es más avanzada, pero suele resolver los problemas más persistentes.


Preguntas frecuentes (FAQ)

¿Por qué me da error "Access denied" si no he cambiado nada?

Puede que el hosting haya hecho algún cambio interno, como actualizar la versión de MySQL o cambiar los permisos de los usuarios. También es posible que la contraseña haya caducado si tu proveedor tiene políticas de rotación de contraseñas.

¿Puedo usar la misma base de datos para WordPress y PrestaShop?

Técnicamente sí, pero no es recomendable porque las tablas pueden entrar en conflicto. Si tienes ambos CMS, usa bases de datos separadas. Si el error aparece en ambos, el problema es común (credenciales del servidor, permisos, etc.).

¿Qué hago si no tengo acceso a phpMyAdmin ni a Syspanel?

Contacta con el soporte de tu hosting. Ellos pueden verificar los permisos, cambiar contraseñas o reparar la base de datos por ti. Ten a mano el nombre de tu dominio y el mensaje de error exacto.

¿Es seguro cambiar la contraseña de la base de datos directamente en MySQL?

Sí, pero debes actualizar también el archivo de configuración del CMS inmediatamente después. Si no lo haces, tu web seguirá intentando conectarse con la contraseña antigua.


Resumen final y prevención

El error acceso denegado mysql es frustrante, pero en la mayoría de los casos se resuelve verificando las credenciales, los permisos y el host. Sigue este orden lógico:

  1. Revisa el archivo de configuración (wp-config.php o parameters.php).
  2. Comprueba que el usuario existe y tiene permisos.
  3. Verifica el host de la base de datos.
  4. Revisa los logs de MySQL para más pistas.
  5. Repara o restaura la base de datos si es necesario.

Para evitar que vuelva a ocurrir:

  • Guarda tus contraseñas en un gestor seguro.
  • Anota cualquier cambio que hagas en el hosting.
  • Haz copias de seguridad periódicas de la base de datos.
  • Si usas Syspanel (HestiaCP), familiarízate con su interfaz en el puerto 2106 para poder gestionar bases de datos con rapidez.

Recuerda que, si te sientes perdido, siempre puedes pedir ayuda a tu proveedor de hosting. Este tipo de errores es pan de cada día para ellos y suelen resolverlo en minutos.

Espero que esta guía te haya servido para solucionar el problema. Si te ha funcionado o tienes alguna duda adicional, ¡no dudes en dejar un comentario!

¿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