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?

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;

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';
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.