MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Correctif :Accès refusé pour l'utilisateur 'root'@'localhost' dans MariaDB

Si vous obtenez une erreur vous indiquant que l'accès est refusé pour la root utilisateur dans MariaDB, cet article peut vous aider.

L'erreur

J'essayais d'importer les informations de fuseau horaire de mon système dans MariaDB avec la commande suivante :

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Mais cela a entraîné l'erreur suivante :

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

La Cause

Après avoir enquêté sur cela, j'ai réalisé que la root l'utilisateur n'avait pas encore défini son mot de passe.

Lorsque j'ai exécuté la requête suivante :

SELECT user, password 
FROM user
WHERE User = 'root';

J'ai obtenu le résultat suivant :

+-------------+----------+
| User        | Password |
+-------------+----------+
| root        | invalid  |
+-------------+----------+

La documentation de MariaDB indique ce qui suit :

Néanmoins, certains utilisateurs peuvent souhaiter se connecter en tant que root MariaDB sans utiliser sudo. Par conséquent, l'ancienne méthode d'authentification - le mot de passe MariaDB conventionnel - est toujours disponible. Par défaut, il est désactivé ("invalide" n'est pas un hachage de mot de passe valide), mais on peut définir le mot de passe avec un SET PASSWORD habituel déclaration. Et conservez toujours l'accès sans mot de passe via sudo.

Cela ressemble donc à notre réponse.

La solution

Selon le paragraphe ci-dessus, j'avais besoin de définir le mot de passe pour le root utilisateur :

SET PASSWORD FOR 'root'@localhost = PASSWORD("myReallyStrongPwd");

L'exécuter (avec un mot de passe différent) a fait l'affaire.

Donc, si vous obtenez l'erreur ci-dessus, cela vous aidera peut-être.