Cómo solucionar el error 'Access denied for user' en WordPress al conectar a MySQL
¿Acabas de intentar entrar en tu WordPress y te has encontrado con el temido mensaje “Error establishing a database connection” o, si tienes la depuración activada, con el texto “Access denied for user ‘usuario’@‘localhost’ (using password: YES)”?
No te preocupes, es uno de los errores más comunes en WordPress, pero también de los más fáciles de solucionar si sigues los pasos adecuados. Este fallo indica que WordPress no puede conectarse a tu base de datos MySQL porque las credenciales que está utilizando son incorrectas o no tienen los permisos necesarios.
En esta guía extensa y detallada, vamos a desglosar todas las causas posibles y te daremos soluciones paso a paso, desde las más simples hasta las más avanzadas, para que puedas solucionar access denied y volver a tener tu web funcionando en pocos minutos.
¿Qué significa exactamente el error “Access denied for user”?
Cuando ves este error, significa que el servidor MySQL ha recibido una solicitud de conexión, pero ha rechazado al usuario porque la contraseña no coincide, el usuario no existe, o no tiene permisos para acceder a la base de datos específica que tu WordPress está intentando usar.
Imagina que intentas entrar en una oficina con una llave equivocada. La puerta no se abre y el sistema te dice “acceso denegado”. Pues aquí es exactamente lo mismo, pero entre tu web (el visitante) y la base de datos (la oficina).
Este error no daña tu sitio, solo impide que se cargue. Los archivos siguen intactos, pero la web no puede mostrar nada porque no puede leer la información de las entradas, páginas o usuarios.
Causas más comunes de este error
Antes de lanzarnos a modificar archivos, es importante entender qué puede estar fallando. Las causas más habituales son:
- Credenciales incorrectas en el archivo
wp-config.php: El usuario, la contraseña, el nombre de la base de datos o el host están mal escritos. - Cambio de contraseña de MySQL: Alguien cambió la contraseña del usuario de la base de datos y WordPress sigue usando la antigua.
- Permisos MySQL insuficientes: El usuario no tiene privilegios para acceder a la base de datos desde el host especificado (por ejemplo, solo puede acceder desde
localhosty no desde127.0.0.1). - Problemas con el prefijo de la base de datos: Aunque es menos común, si el prefijo no coincide, puede dar errores extraños.
- Corrupción en el archivo
wp-config.php: Una edición manual mal hecha o un archivo dañado. - Servidor MySQL caído o sobrecargado: A veces el error es temporal y solo necesitas reiniciar el servicio.
Solución paso a paso: Cómo solucionar el error access denied en WordPress
Vamos a ir de lo más sencillo a lo más técnico. No saltes directamente a los pasos avanzados si no los necesitas. Sigue el orden y verás que en la mayoría de los casos se resuelve rápido.
Paso 1: Verifica si el problema es temporal
A veces, el servidor de bases de datos se sobrecarga o se reinicia. Antes de tocar nada, espera un par de minutos y recarga tu web. Si el error aparece y desaparece, puede ser un problema de recursos del servidor.
[TIP] Si estás usando un hosting compartido, revisa si tu proveedor ha anunciado mantenimiento programado. Puedes consultar el estado del servicio en el panel de control o en su página de estado.
Paso 2: Accede a tu panel de control de hosting y revisa la base de datos
Para solucionar access denied, necesitas verificar que la base de datos existe y que el usuario tiene los permisos correctos. Accede a tu panel de control (cPanel, Plesk, o Syspanel si usas HestiaCP, que se accede a través del puerto 2106).
En Syspanel (HestiaCP):
- Abre tu navegador y escribe
https://tu-dominio.com:2106para acceder a Syspanel. - Inicia sesión con tu usuario administrador.
- Busca la sección de “Base de Datos” o “Databases”.
- Verás listadas todas tus bases de datos. Comprueba que la base de datos que usa tu WordPress (la que aparece en tu
wp-config.php) existe y está activa.
En cPanel:
- Ve a la sección “Bases de datos MySQL”.
- Comprueba que la base de datos y el usuario existen.
- Asegúrate de que el usuario está añadido a la base de datos con todos los privilegios (SELECT, INSERT, UPDATE, DELETE, etc.).
[WARNING] Si la base de datos no existe, tendrás que crearla de nuevo y restaurar una copia de seguridad. Pero eso es menos común.
Paso 3: Revisa el archivo wp-config.php (la causa más frecuente)
Este es el archivo más importante en esta solución. Contiene las credenciales de conexión a MySQL. Un simple error de escritura o un espacio extra puede provocar el error mysql wordpress.
- Conéctate a tu hosting vía FTP (FileZilla, por ejemplo) o mediante el administrador de archivos del panel.
- Localiza la carpeta raíz de tu WordPress (donde están las carpetas
wp-admin,wp-contentywp-includes). - Busca el archivo
wp-config.php(no confundir conwp-config-sample.php). - Ábrelo con un editor de texto plano (nunca con Word o editores enriquecidos).
Verás líneas como estas:
define( 'DB_NAME', 'tu_base_de_datos' );
define( 'DB_USER', 'tu_usuario' );
define( 'DB_PASSWORD', 'tu_contraseña' );
define( 'DB_HOST', 'localhost' );
Comprueba que estos cuatro valores son exactamente los mismos que tienes en tu panel de control de bases de datos.
- DB_NAME: Debe coincidir con el nombre de la base de datos.
- DB_USER: Debe coincidir con el usuario asignado.
- DB_PASSWORD: La contraseña debe ser correcta. Si la has cambiado recientemente, este es el problema.
- DB_HOST: Normalmente es
localhost, pero algunos hosts usan127.0.0.1o incluso una dirección IP comomysql.tudominio.com.
[TIP] Si no estás seguro de la contraseña, puedes cambiarla desde tu panel de control. En Syspanel, ve a la sección de bases de datos, edita el usuario y genera una nueva contraseña. Luego actualiza el archivo wp-config.php con la nueva.
Paso 4: Ajusta el parámetro DB_HOST
A veces, el error ocurre porque MySQL solo acepta conexiones desde localhost, pero tu archivo dice 127.0.0.1 o viceversa.
- Prueba a cambiar el valor de
DB_HOSTalocalhost. - Si ya estaba en
localhost, cámbialo a127.0.0.1. - Guarda el archivo y recarga tu web.
Si ninguna de las dos opciones funciona, consulta con tu proveedor de hosting cuál es el host correcto para las conexiones MySQL. En algunos casos, especialmente en servidores dedicados o VPS, necesitas una IP específica.
Paso 5: Verifica los permisos MySQL del usuario
Si las credenciales son correctas pero el error persiste, el problema puede ser de permisos.
Desde Syspanel (HestiaCP):
- Accede al puerto 2106.
- Ve a la sección de bases de datos.
- Busca la base de datos y el usuario asociado.
- Asegúrate de que el usuario tiene todos los privilegios marcados. Si no, edítalo y concédele todos.
- Guarda los cambios.
Desde cPanel:
- Ve a “Bases de datos MySQL”.
- En la sección “Añadir usuario a la base de datos”, selecciona tu usuario y tu base de datos.
- Marca la casilla de “TODOS LOS PRIVILEGIOS”.
- Haz clic en “Hacer cambios”.
[INFO] En MySQL, un usuario puede tener permisos para conectarse solo desde una IP específica. Si tu WordPress y tu MySQL están en el mismo servidor, suele ser localhost. Si usas un servicio de base de datos externo, necesitas añadir la IP de tu servidor web a la lista de hosts permitidos.
Paso 6: Revisa si el usuario de MySQL existe realmente
A veces, el usuario ha sido eliminado o nunca se creó correctamente.
- En tu panel de control, lista todos los usuarios de bases de datos.
- Busca el usuario que aparece en tu
wp-config.php. - Si no existe, créalo con el mismo nombre y contraseña.
- Añádelo a la base de datos con todos los privilegios.
[WARNING] Si creas un usuario nuevo, asegúrate de que la contraseña sea exactamente la misma que has puesto en wp-config.php. O mejor aún, actualiza el archivo con la nueva contraseña.
Paso 7: Comprueba si hay caracteres extraños en las contraseñas
Un error muy típico es copiar la contraseña desde un correo electrónico y que se incluyan espacios o caracteres invisibles. También puede ocurrir si el panel de control genera contraseñas con caracteres especiales y el archivo wp-config.php no los guarda correctamente.
- Borra la contraseña en
wp-config.php. - Escríbela manualmente, sin copiar y pegar.
- Si la contraseña tiene caracteres como
$,&,#, asegúrate de que están entre comillas simples o dobles correctamente.
En PHP, si una contraseña contiene comillas simples, debes escaparlas con una barra invertida (\'). Por ejemplo:
define( 'DB_PASSWORD', 'Mi\$Contraseña' );
Paso 8: Restablece la contraseña de MySQL desde la línea de comandos (avanzado)
Si tienes acceso SSH a tu servidor, puedes hacer un restablecimiento directo. Esto es útil si no puedes acceder al panel de control o si el usuario está bloqueado.
- Conéctate por SSH.
- Accede a MySQL como root:
mysql -u root -p - Introduce la contraseña de root (si no la sabes, contacta con tu proveedor).
- Ejecuta los siguientes comandos:
ALTER USER 'tu_usuario'@'localhost' IDENTIFIED BY 'nueva_contraseña';
GRANT ALL PRIVILEGES ON tu_base_de_datos.* TO 'tu_usuario'@'localhost';
FLUSH PRIVILEGES;
- Sal de MySQL con
exit;. - Actualiza
wp-config.phpcon la nueva contraseña.
[TIP] Si el usuario aparece como 'tu_usuario'@'%' (acceso desde cualquier host), usa ese formato en los comandos.
Paso 9: Revisa los logs de error de MySQL
Si has llegado hasta aquí y el error persiste, necesitas ver los logs del servidor de bases de datos. Estos archivos te darán pistas exactas sobre por qué se rechaza la conexión.
- En la mayoría de los servidores Linux, los logs están en
/var/log/mysql/error.log. - En Syspanel, puedes acceder a los logs desde la interfaz web en el puerto 2106.
Busca líneas que contengan “Access denied” y verás el usuario y el host que intenta conectarse. Esto te confirmará si el problema es de contraseña, de permisos o de host.
Paso 10: Solución definitiva: Restablece el archivo wp-config.php
Si nada funciona, puedes crear un wp-config.php nuevo desde cero.
- Renombra el archivo actual a
wp-config-backup.php. - Ve a la carpeta de WordPress y busca el archivo
wp-config-sample.php. - Cópialo y renómbralo como
wp-config.php. - Ábrelo y rellena los datos con las credenciales correctas.
- Guarda y recarga tu web.
[WARNING] Este método es más drástico, pero asegura que el archivo no tiene errores de codificación o caracteres ocultos que estaban causando el problema.
Preguntas frecuentes (FAQ) sobre el error access denied en WordPress
¿Puedo perder datos si modifico el wp-config.php?
No. Este archivo solo contiene datos de configuración. Tus entradas, páginas y comentarios están en la base de datos MySQL y no se ven afectados.
¿Por qué aparece de repente si antes funcionaba?
Las causas más comunes son un cambio de contraseña en el panel de control, una actualización de MySQL que cambia los permisos, o un ataque malintencionado que ha modificado el archivo.
¿Es lo mismo “Access denied for user” que “Error establishing a database connection”?
No exactamente. El segundo es un error genérico que puede deberse a que MySQL está caído. El primero es específico de autenticación. Si ves “Access denied…”, es que MySQL está funcionando pero rechaza tus credenciales.
¿Qué hago si no tengo acceso al panel de control?
Si no puedes acceder a cPanel, Syspanel o similar, contacta con tu proveedor de hosting. Ellos pueden darte acceso temporal o restablecer las credenciales por ti.
Conclusión
El error “Access denied for user” en WordPress es frustrante, pero casi siempre tiene una solución sencilla. La clave está en revisar tres cosas: las credenciales en wp-config.php, los permisos del usuario en MySQL y el host de conexión.
Sigue los pasos en orden y, en el 90% de los casos, tendrás tu web funcionando en menos de 15 minutos. Recuerda siempre hacer una copia de seguridad del archivo wp-config.php antes de modificarlo, y si usas Syspanel, no olvides que el acceso es a través del puerto 2106.
Si después de todo esto el error persiste, no dudes en contactar con tu proveedor de hosting. A veces el problema está en el servidor y solo ellos pueden resolverlo.
[INFO] Guarda este artículo como referencia. Este tipo de errores suele repetirse cada vez que cambias la contraseña de tu base de datos o migras tu web a otro servidor.
