Error 1698 28000 Access Denied For User Root Localhost

El error 1698 28000 Access Denied for User Root Localhost en MySQL (y MariaDB) indica que el usuario 'root', que intenta conectarse desde 'localhost' (tu propia máquina), no tiene los permisos necesarios para acceder a la base de datos.
Este error es crucial entenderlo porque el usuario 'root' tiene, o debería tener, privilegios administrativos sobre la base de datos. Impedir su acceso bloquea tareas esenciales como la gestión de usuarios, la creación de bases de datos y el mantenimiento del sistema.
Solución Paso a Paso:
Aquí tienes una guía para solucionar este problema:
Must Read
- Paso 1: Acceder a MySQL con un usuario alternativo (si es posible). A veces, tienes otro usuario con privilegios para acceder. Si lo tienes, úsalo para los siguientes pasos.
- Paso 2: Reiniciar MySQL en modo seguro (si no hay usuarios alternativos).
- Linux (Systemd):
sudo systemctl stop mysql, seguido desudo mysqld_safe --skip-grant-tables &(el "&" lo ejecuta en segundo plano). - Windows: Detén el servicio MySQL a través del Administrador de Tareas (Ctrl+Shift+Esc) o Servicios (busca "MySQL"). Luego, abre un símbolo del sistema como administrador y ejecuta:
mysqld --skip-grant-tables - Nota: Este modo desactiva la comprobación de contraseñas.
- Linux (Systemd):
- Paso 3: Conectarse a MySQL sin contraseña. Abre una nueva terminal y ejecuta:
mysql -u root. Como iniciamos MySQL sin comprobación de contraseñas, esto debería funcionar. - Paso 4: Actualizar la contraseña del usuario 'root'. Dentro de la consola de MySQL, ejecuta:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'nuevacontraseña'; FLUSH PRIVILEGES;Sustituye 'nuevacontraseña' por una contraseña segura. Recuerda: la contraseña es case-sensitive. Si tienes problemas con la sintaxis, prueba la siguiente versión:
UPDATE mysql.user SET authentication_string=PASSWORD("nuevacontraseña") WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES; - Paso 5: Reiniciar MySQL normalmente. Cierra la consola de MySQL, detén el proceso
mysqld_safeomysqld(en Windows, finaliza el proceso o reinicia el servicio MySQL) y reinicia MySQL como lo harías normalmente (sudo systemctl start mysqlen Linux, o reinicia el servicio en Windows).
Después de estos pasos, deberías poder conectarte a MySQL como el usuario 'root' usando la nueva contraseña que estableciste. Recuerda usar una contraseña segura y almacenarla en un lugar seguro.
