Cómo corregir el error 'Access denied for user' en MySQL (WordPress/PrestaShop)
¡Hola! Si estás leyendo esto, es muy probable que hayas visto un mensaje de error bastante intimidante en tu sitio web. No te preocupes, es uno de los problemas más comunes en el mundo del hosting y, por suerte, casi siempre tiene solución. Ese mensaje de "Access denied for user" no significa que hayas perdido tus datos, sino que hay un problema de comunicación entre tu aplicación (WordPress o PrestaShop) y el servidor de bases de datos.
En esta guía extensa y paso a paso, vamos a desglosar exactamente qué significa este error, por qué ocurre y, lo más importante, cómo solucionarlo para que tu web vuelva a funcionar en cuestión de minutos. Vamos a ello.
¿Qué significa exactamente "Access denied for user mysql"?
Cuando ves un error como Access denied for user 'usuario'@'localhost' (using password: YES) o similar, lo que está pasando es que tu sitio web está intentando conectarse a la base de datos con un nombre de usuario y una contraseña, pero el servidor MySQL (o MariaDB) está rechazando esa conexión.
Piénsalo como si intentaras entrar en tu casa con una llave equivocada. La puerta (el servidor MySQL) está cerrada y te dice: "No te conozco o la llave no es correcta". Las causas más comunes para esto son:
- Credenciales incorrectas: El usuario, la contraseña o el nombre de la base de datos en tu archivo de configuración no coinciden con los que están en el servidor.
- Privilegios insuficientes: El usuario existe, pero no tiene permiso para acceder a la base de datos específica que estás intentando usar.
- Host incorrecto: El usuario está configurado para conectarse solo desde un lugar específico (por ejemplo,
localhost) y estás intentando conectarte desde otro. - Problemas con el servidor de base de datos: El servicio MySQL está caído o tiene un problema interno.
En el contexto de WordPress y PrestaShop, este error suele aparecer de repente, a menudo después de mover el sitio a un nuevo hosting, restaurar una copia de seguridad o simplemente por un fallo del sistema.
Paso 1: Identifica el problema exacto en tu sitio
Antes de tocar nada, necesitamos saber si el error es solo en la web o también en el panel de administración.
### ¿Tu panel de administración (wp-admin) también falla?
- Si la web y el panel fallan: El problema es seguro con las credenciales o los permisos de la base de datos. Sigue los pasos 2 y 3.
- Si la web falla pero el panel funciona: Esto es más raro, pero puede indicar un problema con un plugin o un tema que intenta usar una conexión diferente. A veces, un caché corrupto también lo causa. Prueba a borrar la caché del navegador y a desactivar plugins (si puedes) antes de continuar.
- Si todo funciona pero ves el error en los logs: Puede que un plugin esté intentando conectar con credenciales antiguas. Revisa los logs de error de PHP para ver qué archivo lo genera.
Paso 2: La solución más fácil y común (WordPress y PrestaShop)
Esta es la primera línea de ataque. El archivo de configuración de tu web guarda las llaves para entrar a la base de datos. Vamos a verificar que son las correctas.
### Para WordPress: El archivo wp-config.php
- Accede a tu hosting mediante FTP o el Administrador de Archivos en tu panel de control (cPanel, Syspanel, etc.).
- Busca el archivo
wp-config.phpen la carpeta raíz de tu instalación de WordPress. - Ábrelo con un editor de texto (como el Bloc de notas o un editor de código).
- Busca las líneas que se parecen a estas:
define( 'DB_NAME', 'tu_basededatos' );
define( 'DB_USER', 'tu_usuario' );
define( 'DB_PASSWORD', 'tu_contraseña' );
define( 'DB_HOST', 'localhost' );
- Verifica que estos cuatro datos sean EXACTAMENTE los mismos que tienes en tu panel de control de hosting. A menudo, un error de copiar y pegar (un espacio extra o una letra cambiada) es la causa.
- Presta mucha atención al
DB_HOST. En algunos hostings, no eslocalhost, sino algo comomysql.tu-dominio.comolocalhost:3306. Si tu proveedor te ha dado un host específico, debes ponerlo aquí.
### Para PrestaShop: El archivo parameters.php
- Ve a la carpeta
app/config/de tu instalación de PrestaShop. - Encuentra el archivo
parameters.php. - Ábrelo y busca el array
'parameters' =>. Dentro, verás las claves'database_host','database_name','database_user'y'database_password'.
'database_host' => 'localhost',
'database_name' => 'tu_basededatos',
'database_user' => 'tu_usuario',
'database_password' => 'tu_contraseña',
- Haz la misma verificación que en WordPress: que todos los datos coincidan con los de tu hosting.
[TIP] Si no encuentras el archivo parameters.php, puede que tengas una versión antigua de PrestaShop. En ese caso, busca el archivo config/settings.inc.php.
Paso 3: Solucionar el error de acceso a MySQL desde el panel de control
Si los datos en los archivos de configuración son correctos, o si quieres estar 100% seguro de que las credenciales son válidas, el siguiente paso es comprobarlo directamente en el servidor.
### Accede a tu herramienta de gestión de bases de datos
La mayoría de los paneles de control de hosting tienen una herramienta llamada phpMyAdmin o Adminer.
- Si usas Syspanel (antes HestiaCP): Accede a tu panel en
https://tu-dominio.com:2106. Dentro, busca la sección de "Bases de Datos" o "Base de datos MySQL". Desde ahí podrás entrar a phpMyAdmin. - Si usas cPanel: Busca la sección "Bases de datos" y haz clic en "phpMyAdmin".
- Si usas Plesk: Busca "Bases de datos" y luego el icono de "phpMyAdmin" para tu base de datos.
### Comprueba los usuarios y privilegios
Una vez dentro de phpMyAdmin, haz lo siguiente:
- En la pestaña "Bases de datos", verás una lista. Asegúrate de que la base de datos que tu web intenta usar (la que pusiste en
DB_NAMEodatabase_name) existe. - Haz clic en la pestaña "Usuarios" (o "Cuentas de usuario").
- Busca el usuario que tu web está usando (el que pusiste en
DB_USERodatabase_user). - Haz clic en "Editar privilegios" (o un icono similar) para ese usuario.
- Marca la opción "Seleccionar todo" para darle todos los privilegios (SELECT, INSERT, UPDATE, DELETE, etc.). En la mayoría de los casos para WordPress y PrestaShop, es más fácil darle todos los privilegios sobre la base de datos específica que le corresponda.
- Importante: En el apartado "Host" (o "Servidor"), asegúrate de que el usuario esté configurado para
localhost(o127.0.0.1) si tu web se conecta desde el mismo servidor. Si tu web usa un host externo, tendrás que poner ese host específico. - Guarda los cambios y prueba a recargar tu sitio web.
[WARNING] Si el usuario ni siquiera aparece en la lista, significa que no existe. En ese caso, deberás crearlo de nuevo y asignarlo a la base de datos con todos los privilegios. Si no sabes cómo hacerlo, contacta con tu proveedor de hosting, es una tarea de 2 minutos para ellos.
Paso 4: Solución avanzada: Cambiar la contraseña del usuario MySQL
A veces, la contraseña que tienes en tu archivo de configuración se ha guardado mal, o el servidor la ha cambiado por seguridad. La forma más limpia de solucionarlo es crear una nueva contraseña para el usuario de la base de datos y actualizarla en tu archivo de configuración.
- En phpMyAdmin, ve a la pestaña "Usuarios".
- Encuentra tu usuario y haz clic en "Editar privilegios".
- Busca la sección "Cambiar contraseña".
- Escribe una nueva contraseña segura (puedes usar el generador que te sugiere la propia herramienta).
- Haz clic en "Continuar" o "Guardar".
- Ahora, actualiza esta nueva contraseña en tu archivo de configuración (
wp-config.phpoparameters.php) que vimos en el Paso 2. - Guarda el archivo y recarga tu web.
[INFO] Este proceso es a prueba de balas. Si el error era por una contraseña incorrecta, esto lo arreglará definitivamente.
Paso 5: ¿Y si el error persiste? Problemas con el servidor MySQL
Si has hecho todos los pasos anteriores y el error de acceso denegado mysql continúa, es hora de mirar el servidor en sí.
### Reinicia el servicio MySQL
A veces, el servicio de base de datos se bloquea o se corrompe temporalmente.
- Si tienes acceso SSH (VPS o servidor dedicado):
- Puedes intentar reiniciar el servicio con un comando como
sudo systemctl restart mysqlosudo systemctl restart mariadb.
- Puedes intentar reiniciar el servicio con un comando como
- Si estás en un hosting compartido:
- No podrás reiniciar el servicio. En este caso, deberías contactar con el soporte de tu hosting y decirles: "He verificado mis credenciales y mis privilegios, pero sigo recibiendo el error 'Access denied for user mysql'. ¿Podrían reiniciar el servicio de MySQL o revisar los logs del servidor?"
### Revisa los logs de error de MySQL
Los logs del servidor MySQL son el diario de a bordo. Contienen la razón exacta por la que se deniega el acceso.
- Con acceso SSH: Puedes mirar el log en
/var/log/mysql/error.logo/var/log/mysql/mysql.log. - Sin acceso SSH: Pide a tu proveedor de hosting que revise los logs de MySQL por ti. Buscarán errores como
Access denied for user 'tu_usuario'@'localhost' (using password: YES), que confirma que la contraseña no es válida, ousing password: NO, que significa que la contraseña está vacía.
Paso 6: Errores específicos de PrestaShop y WordPress
Aunque el proceso es el mismo, hay matices que debes conocer.
### Para PrestaShop: El problema de la caché
PrestaShop es conocido por guardar una caché muy agresiva de su configuración. A veces, aunque corrijas el archivo parameters.php, PrestaShop sigue usando la configuración antigua guardada en su caché.
- Borra la carpeta
var/cache(oapp/cacheen versiones antiguas) de tu instalación de PrestaShop. Puedes hacerlo por FTP. Si no existe, no pasa nada. - Borra el archivo
cache/class_index.phpsi existe. - Recarga tu web. Verás que ahora PrestaShop regenera la caché con la nueva configuración.
### Para WordPress: El problema de los plugins de caché
Algo similar puede pasar con plugins de caché como W3 Total Cache o WP Super Cache.
- Ve a tu panel de administración de WordPress (si puedes acceder).
- Ve a la configuración de tu plugin de caché y borra toda la caché.
- Si no puedes acceder al panel, borra la carpeta
wp-content/cachepor FTP.
Preguntas Frecuentes (FAQ) sobre el error "Access denied for user mysql"
Para finalizar, resolvamos las dudas más comunes que nos suelen llegar al soporte.
### ¿Por qué me sale este error después de cambiar mi contraseña de cPanel o Syspanel?
Al cambiar la contraseña de tu cuenta de hosting, algunos paneles no actualizan automáticamente las contraseñas de las bases de datos. Debes cambiar la contraseña del usuario de la base de datos específica en la sección de "Bases de datos MySQL" de tu panel y luego actualizar el archivo de configuración de tu web.
### ¿Puedo usar la misma contraseña que la de mi cuenta de hosting para la base de datos?
No. Es una mala práctica de seguridad. Las contraseñas de las bases de datos deben ser únicas. Además, si cambias la contraseña de tu cuenta de hosting, no cambiará la de la base de datos.
### He creado un usuario nuevo y le he dado todos los privilegios, pero sigue sin funcionar.
Revisa que el host del usuario sea el correcto. Si tu web se conecta desde el mismo servidor, debe ser localhost o 127.0.0.1. Si has puesto un dominio, puede que no funcione. También asegúrate de que en tu archivo de configuración el DB_HOST coincida exactamente con el host del usuario.
### ¿Este error puede significar que han hackeado mi sitio?
Es poco probable. Un atacante no suele cambiar tus credenciales para bloquear tu acceso; lo haría para controlar tu web. Este error es casi siempre un problema de configuración o de permisos, no de seguridad. Sin embargo, si también ves otros signos de actividad extraña (archivos nuevos, contenido modificado), deberías revisar la seguridad de tu hosting.
### ¿Qué hago si nada de esto funciona?
Si has seguido todos los pasos al pie de la letra y el error de error acceso mysql wordpress o privilegios mysql prestashop persiste, es el momento de contactar con el soporte técnico de tu proveedor de hosting. Es posible que haya un problema a nivel de servidor que tú no puedas ver. Diles exactamente lo que has hecho y el mensaje de error completo. Ellos tienen las herramientas y el acceso para solucionarlo de raíz.
Conclusión: No temas al error "Access denied"
Como has visto, el error access denied for user mysql es un problema de configuración, no una sentencia de muerte para tu web. La clave está en la paciencia y en seguir una secuencia lógica: verificar credenciales, comprobar permisos, y si todo falla, reiniciar servicios o pedir ayuda.
Con esta guía, ya tienes el conocimiento para solucionar el 90% de los casos sin necesidad de ser un experto en servidores. Respira hondo, sigue los pasos con calma y verás como tu sitio vuelve a la vida. ¡Mucha suerte!
