Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens des erreurs « Accès refusé » lorsque j'accorde des privilèges MySQL malgré les autorisations nécessaires ?

Pourquoi est-ce que j'obtiens des erreurs « Accès refusé » lorsque j'accorde des privilèges MySQL malgré les autorisations nécessaires ?

Linda Hamilton
Libérer: 2024-12-01 00:49:15
original
495 Les gens l'ont consulté

Why Do I Get

Accorder des privilèges sans erreurs d'accès refusé

Lors de la tentative d'accorder des privilèges, les utilisateurs MySQL peuvent rencontrer l'erreur "Accès refusé pour l'utilisateur 'root' @'localhost' (en utilisant le mot de passe : OUI)." Cela peut être déroutant, car il peut sembler que l'utilisateur dispose des autorisations nécessaires.

Vérification des privilèges

Pour confirmer que l'utilisateur dispose des privilèges appropriés, exécutez les commandes suivantes :

SELECT user();
SELECT current_user();
SHOW GRANTS FOR 'root'@'localhost';
SELECT * FROM mysql.user WHERE User='root';
Copier après la connexion

Ces commandes doivent vérifier que l'utilisateur est bien root@localhost et dispose des autorisations nécessaires, y compris :

  • SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER
  • Créer et manipuler tables, vues et routines
  • Accorder des privilèges à d'autres utilisateurs

Problème : octroi de privilèges sur des tables spécifiques

Malgré ces autorisations, une erreur peut se produire lors de la tentative d'accorder des privilèges sur des tables spécifiques :

GRANT ALL PRIVILEGES ON *.* TO 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]' WITH GRANT OPTION;
Copier après la connexion

Cela est dû au fait que la table mysql.users est considérée comme interdite à tous les utilisateurs, sauf root.

Solution : accorder des privilèges sur toutes les bases de données

Pour contourner ce problème, utilisez la commande suivante, qui accorde des privilèges sur toutes les bases de données à l'exception de mysql.users :

GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;
Copier après la connexion

Utiliser %. au lieu de .* garantit que toutes les bases de données sont incluses à l'exception de la table mysql.users. Cela devrait réussir à accorder des privilèges sans déclencher l'erreur d'accès refusé.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal