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

Solución a 'Access denied for user' en bases de datos MySQL

Actualizado el 26 de diciembre de 2025

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

Si alguna vez has visto un mensaje como “Access denied for user ‘usuario’@‘localhost’” al intentar conectar con tu base de datos, no te preocupes: es uno de los errores más comunes en MySQL y, por suerte, casi siempre tiene una solución clara y sencilla.

Este error aparece cuando MySQL rechaza la conexión porque el usuario, la contraseña o los permisos no son correctos. Puede ocurrir al instalar WordPress, al migrar un sitio web, al acceder desde phpMyAdmin o al ejecutar un script.

En esta guía te explicaré paso a paso cómo solucionar el access denied mysql, desde lo más básico hasta soluciones avanzadas, con ejemplos prácticos y consejos para que no vuelvas a encontrarte con este problema.


Causas más comunes del error de acceso a MySQL

Antes de lanzarnos a solucionar, es importante entender por qué ocurre. Estas son las causas más habituales:

  • Contraseña incorrecta para el usuario de la base de datos.
  • Usuario no existe o está mal escrito.
  • Permisos insuficientes (el usuario no tiene acceso a la base de datos deseada).
  • El usuario solo puede conectarse desde un host específico (por ejemplo, solo desde ‘localhost’ y tú intentas desde otro servidor).
  • MySQL no está ejecutándose o el puerto está bloqueado.
  • Archivos de configuración corruptos (como en WordPress, donde los datos de conexión están en wp-config.php).

Soluciones básicas para el error de acceso denegado en MySQL

1. Verifica los datos de conexión

Lo primero es asegurarte de que el nombre de usuario, la contraseña y el nombre de la base de datos son correctos. Si estás usando WordPress, revisa el archivo wp-config.php en la raíz de tu sitio. Busca estas líneas:

define('DB_NAME', 'nombre_base_datos');
define('DB_USER', 'nombre_usuario');
define('DB_PASSWORD', 'contraseña');
define('DB_HOST', 'localhost');

Asegúrate de que no haya espacios adicionales o caracteres extraños. Si has cambiado la contraseña recientemente, actualízala aquí.

[TIP] Si no recuerdas la contraseña, puedes restablecerla desde el panel de control de tu hosting o desde la línea de comandos de MySQL.


2. Comprueba que el usuario existe y tiene permisos

Desde la línea de comandos de MySQL (como root), puedes listar todos los usuarios de la base de datos:

SELECT User, Host FROM mysql.user;

Si tu usuario no aparece, debes crearlo. Si aparece pero con un Host diferente (por ejemplo, '%' en lugar de 'localhost'), puede que estés intentando conectar desde un lugar no permitido.

Para otorgar permisos completos a un usuario existente, ejecuta:

GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'usuario'@'localhost' IDENTIFIED BY 'contraseña';
FLUSH PRIVILEGES;

[WARNING] Si estás en un servidor remoto, reemplaza 'localhost' por la IP del servidor desde el que te conectas o usa '%' para permitir cualquier host (menos seguro).


3. Reinicia el servicio de MySQL

A veces, después de cambiar permisos o contraseñas, es necesario reiniciar MySQL para que los cambios surtan efecto. Desde la terminal, según tu sistema:

sudo systemctl restart mysql
# o
sudo service mysql restart

En sistemas como Syspanel (antes HestiaCP, accesible por puerto 2106), puedes reiniciar MySQL desde el panel de administración en la sección de servicios.


Solución específica para “mysql acceso denegado wordpress”

Si el error aparece en WordPress, el problema suele estar en el archivo wp-config.php o en los permisos del usuario de la base de datos.

Paso 1: Revisa el archivo wp-config.php

Accede a tu servidor por FTP o mediante el administrador de archivos del hosting. Abre wp-config.php y verifica que los datos sean exactamente los que te proporcionó tu proveedor de hosting.

Paso 2: Prueba la conexión manualmente

Puedes probar la conexión desde la línea de comandos con:

mysql -u nombre_usuario -p -h localhost nombre_base_datos

Si te da error, el problema está en los datos. Si conecta bien, el error puede estar en el propio WordPress (por ejemplo, un plugin que modifica la conexión).

Paso 3: Restablece la contraseña desde phpMyAdmin

Si no recuerdas la contraseña, entra a phpMyAdmin (desde tu panel de control, como cPanel o Syspanel en puerto 2106), selecciona la base de datos y ve a la pestaña “Privilegios”. Allí puedes editar el usuario y asignar una nueva contraseña.

[INFO] En Syspanel, puedes gestionar usuarios y bases de datos desde la sección “Base de datos” del panel. No olvides que el acceso al panel es por el puerto 2106.


Soluciones avanzadas para el error de acceso a MySQL

1. Verifica que MySQL esté escuchando en el puerto correcto

Por defecto, MySQL usa el puerto 3306. Si tu servidor tiene un firewall o si el puerto ha sido cambiado, la conexión fallará. Desde la terminal, comprueba:

sudo netstat -tlnp | grep 3306

Si no ves nada, MySQL no está corriendo o está en otro puerto. Revisa el archivo de configuración /etc/mysql/my.cnf o /etc/my.cnf para ver el puerto configurado.

2. Revisa los logs de MySQL

Los logs suelen dar pistas muy precisas. Ejecuta:

sudo tail -f /var/log/mysql/error.log

Busca líneas que contengan “Access denied”. Allí verás desde qué host y con qué usuario se intentó la conexión.

3. Crea un nuevo usuario con todos los permisos

Si el usuario actual está dañado o no se puede arreglar, crea uno nuevo:

CREATE USER 'nuevo_usuario'@'localhost' IDENTIFIED BY 'contraseña_segura';
GRANT ALL PRIVILEGES ON *.* TO 'nuevo_usuario'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Luego actualiza tu aplicación (WordPress, etc.) con los nuevos datos.

4. Soluciona problemas de autenticación con el plugin caching_sha2_password

Desde MySQL 8, el método de autenticación por defecto cambió a caching_sha2_password. Algunas aplicaciones antiguas no lo soportan. Para solucionarlo, cambia el método a mysql_native_password:

ALTER USER 'usuario'@'localhost' IDENTIFIED WITH mysql_native_password BY 'contraseña';
FLUSH PRIVILEGES;

Preguntas frecuentes (FAQ) sobre el error “Access denied for user”

¿Por qué aparece este error después de migrar mi sitio web?

Al migrar, los datos de conexión (usuario, contraseña, host) pueden cambiar. Si no actualizas el archivo de configuración de tu aplicación, obtendrás el error. Revisa siempre el wp-config.php o el equivalente en tu CMS.

¿Cómo soluciono el error “Access denied for user ‘root’@‘localhost’”?

Si eres root y no puedes acceder, probablemente la contraseña de root se haya perdido. Puedes restablecerla iniciando MySQL en modo seguro (sin privilegios) y luego cambiándola. Este proceso requiere acceso a la terminal del servidor.

¿Qué hago si el error aparece al conectarme desde un script PHP?

Asegúrate de que el usuario tenga permisos para conectarse desde el host donde corre el script. Si el script está en el mismo servidor, usa 'localhost'. Si está en otro servidor, usa la IP correspondiente o '%'.

¿Es seguro usar ‘%’ en el host del usuario?

No es lo más seguro, porque permite conexiones desde cualquier dirección IP. Es mejor especificar la IP exacta del servidor que necesita conectarse. En entornos de desarrollo puedes usar '%', pero en producción evítalo.

¿Cómo evito este error en el futuro?

  • Usa contraseñas seguras y guárdalas en un gestor de contraseñas.
  • Documenta los cambios de permisos y usuarios.
  • Realiza copias de seguridad de la base de datos y de los archivos de configuración.
  • Siempre que migres o cambies de hosting, verifica los datos de conexión antes de desactivar el anterior.

Conclusión

El error “Access denied for user” en MySQL es frustrante, pero casi siempre se soluciona con unos pocos pasos: verificar credenciales, comprobar permisos, revisar el host de conexión y, en casos extremos, crear un nuevo usuario. Ya sea que estés configurando WordPress, una aplicación a medida o simplemente accediendo a tu base de datos, esta guía te ha dado las herramientas para resolverlo.

Recuerda que si usas Syspanel (antes HestiaCP, puerto 2106), puedes gestionar usuarios y bases de datos de forma gráfica, lo que facilita mucho el proceso. Y si te atascas, siempre puedes consultar los logs de MySQL o pedir ayuda a tu proveedor de hosting.

¡Espero que este artículo te haya sido útil! Ahora ya sabes cómo enfrentarte al access denied mysql y salir victorioso.

¿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