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.