Solucionar error "Access denied" en MySQL
¿Qué es el error "Access denied"?
El error "Access denied" (acceso denegado) en MySQL ocurre cuando intentás conectarte a la base de datos o ejecutar un comando, pero el usuario no tiene los permisos necesarios o las credenciales son incorrectas. Este es uno de los errores más comunes al trabajar con MySQL.
Causas comunes del error
- Contraseña incorrecta
- Usuario no existe o no tiene permisos
- Intento de conexión desde un host no permitido
- Privilegios insuficientes para la operación
Soluciones paso a paso
1. Verificar credenciales
- Confirmá que el nombre de usuario y contraseña sean correctos.
- Verificá que no haya espacios adicionales o caracteres especiales mal escritos.
- Probá conectarte desde la terminal para verificar:
mysql -u usuario -p
2. Verificar que el usuario existe
Si tenés acceso como root o administrador, verificá que el usuario exista:
mysql -u root -p
SELECT user, host FROM mysql.user WHERE user='nombre_usuario';
Si el usuario no existe, deberás crearlo o usar un usuario diferente.
3. Verificar permisos del usuario
Revisá los permisos del usuario para la base de datos específica:
SHOW GRANTS FOR 'usuario'@'localhost';
O para ver todos los permisos:
SELECT * FROM mysql.user WHERE user='nombre_usuario';
4. Otorgar permisos necesarios
Si el usuario existe pero no tiene permisos, otorgalos:
GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'usuario'@'localhost';
FLUSH PRIVILEGES;
Para permisos específicos:
GRANT SELECT, INSERT, UPDATE, DELETE ON nombre_base_datos.* TO 'usuario'@'localhost';
FLUSH PRIVILEGES;
5. Verificar host permitido
MySQL puede estar configurado para permitir conexiones solo desde ciertos hosts. Verificá:
SELECT user, host FROM mysql.user WHERE user='nombre_usuario';
Si necesitás permitir conexiones desde cualquier host (no recomendado para producción):
GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'usuario'@'%';
FLUSH PRIVILEGES;
6. Restablecer contraseña de root
Si olvidaste la contraseña de root, podés restablecerla:
- Detené MySQL:
sudo systemctl stop mysql
- Iniciá MySQL en modo seguro:
sudo mysqld_safe --skip-grant-tables &
- Conectate sin contraseña y cambiá la contraseña:
mysql -u root
USE mysql;
UPDATE user SET authentication_string=PASSWORD('nueva_contraseña') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
- Reiniciá MySQL normalmente.
7. Verificar configuración de phpMyAdmin
Si el error ocurre en phpMyAdmin:
- Verificá que el archivo
config.inc.phptenga las credenciales correctas. - Revisá que el usuario tenga permisos para acceder a phpMyAdmin.
- Limpiá la caché del navegador y probá nuevamente.
Problemas comunes específicos
Error: "Access denied for user 'root'@'localhost'"
- Probá con
sudo mysqlen Linux. - O restablecé la contraseña como se explicó arriba.
Error: "Access denied for user '@'localhost'"
- El nombre de usuario está vacío. Verificá la configuración de conexión.
Error al conectar desde aplicación web
- Verificá que el usuario tenga permisos para conectarse desde el host de la aplicación.
- Revisá la configuración de conexión en tu aplicación.
Consejos de seguridad
- Nunca uses el usuario root para aplicaciones web.
- Crea usuarios específicos con permisos limitados.
- Usa contraseñas seguras y cámbialas periódicamente.
- Revisa regularmente los permisos de los usuarios.
¿Necesitás ayuda?
Si no podés resolver el error "Access denied", abrí un ticket desde el panel de billing.baires.host o contactanos por soporte.
También podés escribirnos por nuestras redes:
- Instagram: @baires_host
- Discord (soporte activo): https://discord.gg/dzjauatAFN
- Linktree: https://linktr.ee/baires.host