Categorías
Desarrollo y Programación

Solución al ERROR 1698 (28000): Access denied for user

Este problema me ocurrió en un sistema Raspberry Pi con Ubuntu Server y MySQL, a continuación las versiones que utilizo:

  • Ubuntu 20.04 LTS
  • mysql  Server version: 8.0.20-0ubuntu0.20.04.1 (Ubuntu)

Procedimiento para replicar el error

Después de configurar el server MySQL y hacer mysql_secure_installation mi usuario queda configurado, pero al intentar conectarse con el comando:

 mysql -u root -p

Nos muestra el error:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Soluciones Alternativas:

La mayoría de las soluciones te piden deshabilitar las funciones que vienen en MySQL 8.0 habilitadas por defecto ¿que beneficio tiene quitar las opciones de seguridad por utilizar un sistema obsoleto?

Solución:

Ingresar a MySQL con el comando sudo

 sudo mysql -u root

Listar todos los usuarios que se tienen para validar el tipo de autenticación.

SELECT User, Host, plugin FROM mysql.user;

Lo que nos muestra una lista de usuarios como:

+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | auth_socket           |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)

El usuario que creamos con el asistente de mysql_secure_installation tiene un tipo de autenticación auth_socket lo que no nos permite iniciar sesión.

Crear usuario con el SHA-2

Recuerden otorgar los permisos correspondientes de acceso.

CREATE USER 'elporfirio'@'localhost'
IDENTIFIED WITH caching_sha2_password BY 'MyPassword2020*';

Editar usuario para cambiar a SHA-2

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'MyPassword2020*';

¿Problemas con un password poco seguro? Revisa la información más abajo.

Nuestro usuario ya debería aparecer abajo el ejemplo con el creado y el editado, notar que root tiene ahora el nuevo plugin:

mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| elporfirio       | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
6 rows in set (0.00 sec)

Ahora que el usuario ya tiene el plugin: caching_sha2_password ya puedes iniciar sesión normalmente con el usuario que decidas:

mysql -u elporfirio -p

Solucionado y listo para utilizar tu base de datos MySQL en su última versión.

Problemas con la seguridad de la contraseña

Puedes revisar el medium de micheleberardi para tener mas informción de las politicas de seguridad.

Referencias: