Le mot de passe administrateur de MariaDb ne semble pas fonctionner

8

Je viens d'installer MariaDbsur un nouveau gnome Ubuntu et j'ai ensuite exécuté mysql_secure_installation où j'ai défini un mot de passe administrateur décent, supprimé l'utilisateur anonyme, etc.

Ensuite, j'ai réalisé un comportement étrange concernant le mot de passe administrateur:

  • Si j'essaie de me connecter à partir de mon compte utilisateur normal à l'aide de la commande, mysql -u root -pj'obtiens toujours une erreur: ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    je suis presque sûr d'avoir entré le mot de passe correct que j'ai défini avec mysql_secure_installation plus tôt ...
  • Lorsque j'exécute la commande à partir de root en utilisant sudo mysql -u root -p, j'ai toujours accès à la base de données, quel que soit le mot de passe que j'entre réellement ...

Est-ce un comportement normal, est-ce que je fais quelque chose de mal ou ai-je en quelque sorte foiré l'installation?

suamikim
la source

Réponses:

16

Ce comportement semble cohérent avec l'activation du plug - in pour l' authentification de socket pour l'utilisateur root, où MariaDB approuve les informations d'identification du système d'exploitation reçues via le socket et ne s'appuie pas sur un mot de passe. En utilisant sudoou en vous connectant en tant que root, vous pouvez vous connecter au serveur de base de données en tant que root, car vous êtes root sur le système d'exploitation, mais pas les autres utilisateurs du système d'exploitation.

Vous pouvez supprimer cette option avec:

$ sudo mysql -u root

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

et puis vous obtenez le comportement attendu tout utilisateur qui a le mot de passe root MariaDB devrait pouvoir se connecter en tant que root.

L'alternative est de configurer un autre utilisateur, pas root, qui dispose également de privilèges d'administrateur complets et de l'utiliser, plutôt que root, à des fins d'administration:

$ 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
la source
0

La réponse de HBruijn spécifiée à utiliser

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

Cependant, cela a brisé le système de connexion pour moi, car plus personne ne pouvait se connecter (que ce soit en utilisant le bon mot de passe ou non, et sudo ou non)

Pour que je le fasse fonctionner, je devais utiliser ceci à la place:

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