La contraseña de administrador de MariaDb no parece funcionar

8

Acabo de instalar MariaDben un Ubuntu Gnome nuevo y luego ejecuté mysql_secure_installation donde configuré una contraseña de administrador decente, eliminé el usuario anónimo, etc.

Luego me di cuenta de un comportamiento extraño con respecto a la contraseña de administrador:

  • Si intento iniciar sesión desde mi cuenta de usuario normal con el comando mysql -u root -p, siempre aparece un error: ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    estoy bastante seguro de que ingresé la contraseña correcta que configuré con mysql_secure_installation anteriormente ...
  • Cuando ejecuto el comando desde la raíz usando sudo mysql -u root -p, siempre obtengo acceso a la base de datos, sin importar qué contraseña ingrese realmente ...

¿Es este comportamiento normal, estoy haciendo algo mal o he estropeado la instalación?

suamikim
fuente

Respuestas:

16

Ese comportamiento suena consistente con habilitar el complemento para la autenticación de socket para el usuario raíz, donde MariaDB confía en las credenciales del sistema operativo recibidas a través del socket y no depende de una contraseña. Al usar sudoo iniciar sesión como root, puede conectarse al servidor de la base de datos como root, porque es root en el sistema operativo, pero otros usuarios del sistema operativo no pueden hacerlo.

Puede eliminar esa opción con:

$ sudo mysql -u root

mysql> use mysql;
mysql> update user set plugin='' where User='root';
mysql> flush privileges;

y luego obtiene el comportamiento esperado, cualquier usuario que tenga la contraseña de root de MariaDB debería poder iniciar sesión como root.

La alternativa es configurar otro usuario, no root, que también tenga todos los privilegios de administrador y usarlo, en lugar de root, para fines de administración:

$ sudo mysql -u root
mysql> CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'localhost'
->     WITH GRANT OPTION;
HBruijn
fuente
0

La respuesta de HBruijn especificada para usar

update user set plugin='' where User='root';

Sin embargo, esto rompió el sistema de inicio de sesión para mí, ya que ya nadie podía iniciar sesión (ya sea usando la contraseña correcta o no, y sudo o no)

Para que funcione, necesitaba usar esto en su lugar:

update user set plugin="mysql_native_password" where User='root';
Alex
fuente