Accès refusé pour l'utilisateur 'root'@'localhost' en raison de privilèges manquants
Problème :
Les utilisateurs qui tentent d'accéder à MySQL en tant qu'utilisateur root rencontrent le message "Accès refusé pour l'utilisateur 'root'@'localhost'. (en utilisant le mot de passe : OUI)", indiquant que l'utilisateur root ne dispose pas des privilèges nécessaires pour établir une connexion.
Explication :
Par défaut, MySQL 5.7 et supérieur s'appuient principalement sur l'authentification par socket pour les connexions locales. Cela signifie que tenter de se connecter via la ligne de commande en tant que « sudo mysql » ne nécessitera pas de mot de passe. Cependant, cette méthode d'authentification n'accorde à l'utilisateur root aucun privilège spécifique.
Solution :
Pour établir une connexion par mot de passe et accorder les privilèges de l'utilisateur root :
- Exécutez « SELECT utilisateur, chaîne_d'authentification, plugin, hôte FROM mysql.user ; » requête pour vérifier la configuration utilisateur actuelle. Vérifiez que le plugin d'authentification pour l'utilisateur root est "auth_socket".
- Exécutez la commande "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';" pour modifier la méthode d'authentification de l'utilisateur root de socket à native.
- Exécutez "FLUSH PRIVILEGES;" pour vous assurer que les modifications prennent effet.
- Répétez l'étape 1 pour confirmer que le plugin d'authentification de l'utilisateur root a été remplacé par "mysql_native_password."
Considérations supplémentaires :
- Le "Current-Root-Password" doit être remplacé par le le mot de passe de l'utilisateur root existant.
- Pour les versions MySQL antérieures à 5.7, la méthode d'authentification peut être "caching_sha2_password". Dans ce cas, utilisez "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Current-Root-Password';" à la place.
- Pour les utilisateurs de MariaDB, la commande suivante peut être utilisée pour définir un mot de passe pour l'utilisateur root : "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!