¿Has intentado acceder a la base de datos MySQL como usuario root pero te has topado con el mensaje de error MySQL error 1698 (28000): Acceso denegado para el usuario ‘root’@’localhost’?
Se trata de un problema habitual para las personas que trabajan con MySQL.
Impide el acceso a la base de datos a través de diversos medios, como el terminal, PHPMyAdmin o las interfaces de cliente MySQL.
Más común que con cualquier otro sistema operativo(SO), este error aparece para los usuarios del sistema Ubuntu.
En esta guía detallada, hablaremos de las principales causas del error 1698 de MySQL y proporcionaremos soluciones eficaces para abordar y resolver este error.
Así pues, empecemos a resolver este problema, tras lo cual recuperarás el acceso rápido a tu base de datos MySQL.
¿Qué es el error 1698 de MySQL y por qué se produce?
Detrás del error 1698 de MySQL está el problema de cómo MySQL comprueba si alguien que intenta utilizarlo como usuario «root» tiene permiso para hacerlo.
En algunos sistemas operativos, MySQL no utiliza una contraseña normal para el usuario ‘root’.
La cuenta raíz de MySQL lo comprueba a través del plugin auth_socket o unix_socket.
Este plugin funciona basándose en las credenciales del sistema operativo y no en una contraseña, comprobando si la solicitud de conexión del usuario llega a través de un socket UNIX y, a continuación, validando el nombre de usuario con las credenciales del sistema.
Básicamente, si no has iniciado sesión en tu sistema operativo como usuario «root», MySQL no te permitirá acceder a él como usuario «root».
Se supone que este método hace las cosas más seguras y sencillas, pero en ese proceso puede aparecer el error 1698.
Este error aparece porque hay un conflicto entre las medidas de seguridad y las expectativas del usuario.
Comprender el motivo del error es el primer paso para solucionar el error 1698 y encontrar formas de mantener la base de datos segura y fácil de usar.
> MySQL Error 1698 (28000)
Aprendiendo más sobre el error 1698 de MySQL, descubrimos que su causa principal no es el concepto tradicional de contraseñas, sino un método de autenticación único.
Este método implica el plugin auth_socket o unix_socket, que hemos mencionado anteriormente.
Básicamente, este complemento no se preocupa en absoluto de las contraseñas.
En su lugar, verifica si la conexión se realiza a través de un socket UNIX y, a continuación, comprueba si el nombre de usuario que intenta conectarse coincide con el que está registrado en el sistema.
Este enfoque de la autenticación supone un cambio respecto a la seguridad basada en contraseñas.
Muestra cómo funciona el plugin para permitir la entrada a las personas basándose en la información de usuario del sistema informático.
¿Cómo solucionar el error 1698 de MySQL?
Vamos a discutir soluciones que funcionarán contra el error 1698 de MySQL y garantizarán interacciones eficaces con la base de datos en el futuro.
Cambia el usuario al plugin mysql_native_password
Cambiar a la `mysql_native_passwordes una solución sencilla.
Esto significa actualizar el plugin de autenticación para el usuario root a `. mysql_contraseña_nativa`.
You should modify the root user’s plugin setting and then apply these changes by flushing the MySQL privileges.
This method restores access as an immediate resolution to the access denial issue.
- Accede al intérprete de comandos de MySQL como usuario con privilegios.
- Utiliza este comando para cambiar el método de autenticación del usuario root a `mysql_contraseña_nativa`:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
3. Borra los privilegios para aplicar los cambios:
FLUSH PRIVILEGES;
4. Sal del intérprete de comandos MySQL e intenta acceder de nuevo como usuario root.
Añadir usuario del sistema a la tabla de usuarios MySQL
Añadir un usuario del sistema a la tabla de usuarios de MySQL y habilitar el `auth_socket` mejora la seguridad.
Este método aprovecha la autenticación a nivel de sistema operativo, permitiendo el acceso a la base de datos de una forma más segura que la autenticación tradicional mediante contraseña.
Este enfoque minimiza el riesgo asociado al uso directo de la cuenta raíz para las operaciones de la base de datos.
- Accede al servidor MySQL como usuario root u otro usuario con privilegios suficientes.
- Crea un nuevo usuario y establece la autenticación en `auth_socket`:
CREATE USER 'your_system_user'@'localhost' IDENTIFIED WITH auth_socket;
3. Concede los privilegios necesarios al nuevo usuario:
GRANT ALL PRIVILEGES ON *.* TO 'your_system_user'@'localhost' WITH GRANT OPTION;
4. Borra los privilegios para aplicar los cambios:
FLUSH PRIVILEGES;
5. Entra en MySQL con el nuevo usuario del sistema, utilizando las credenciales del SO para la autenticación.
Desactivar la autenticación unix_socket
Si quieres una solución rápida, desactivar la autenticación de socket UNIX puede proporcionarte una solución inmediata, aunque menos segura.
Este método permite al usuario root iniciar sesión utilizando protocolos de contraseña estándar, eliminando el complemento de socket UNIX del método de autenticación del usuario root.
Aunque esto resuelve el problema de acceso, debes tener en cuenta las posibles contrapartidas en materia de seguridad.
- Abre la consola MySQL.
- Actualiza el usuario root para desactivar la autenticación de socket UNIX:
UPDATE mysql.user SET plugin='' WHERE User='root';
3. Borra los privilegios para guardar los cambios:
FLUSH PRIVILEGES;
Ahora el usuario root puede autenticarse utilizando una contraseña, eludiendo el método de socket UNIX.
Conclusión
El error MySQL 1698 es como un bloqueo en tu camino cuando intentas acceder a tu base de datos.
Tanto si te encuentras con este error por primera vez como si quieres evitar que se produzca en el futuro, es crucial que comprendas los detalles de este error.
Para resolver el error 1698 de MySQL necesitas conocer a fondo la arquitectura de autenticación de MySQL, especialmente cuando se cruza con las prácticas de seguridad a nivel de sistema operativo, como las observadas en los sistemas Ubuntu.
El error 1698 de MYSQL, que deniega el acceso al usuario root, exige una configuración meditada de los mecanismos de autenticación dentro de MySQL. Discutimos a fondo métodos de solución que van desde alterar el plugin de autenticación a `mysql_native_password`, integrar los usuarios del sistema en la tabla de usuarios de MySQL con la función `auth_socket`, o deshabilitando por completo la autenticación UNIX_socket.
Cada solución ofrece un enfoque único para eludir el error, adaptado a diferentes posturas de seguridad y preferencias administrativas.
La que elijas dependerá del nivel de seguridad que quieras tener al utilizar tu sistema de gestión de bases de datos.