Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich die Fehlermeldung „Zugriff verweigert', wenn ich MySQL-Berechtigungen erteile, obwohl ich über die erforderlichen Berechtigungen verfüge?

Warum erhalte ich die Fehlermeldung „Zugriff verweigert', wenn ich MySQL-Berechtigungen erteile, obwohl ich über die erforderlichen Berechtigungen verfüge?

Linda Hamilton
Linda HamiltonOriginal
2024-12-01 00:49:15508Durchsuche

Why Do I Get

Berechtigungen ohne Fehler „Zugriff verweigert“ gewähren

Beim Versuch, Berechtigungen zu erteilen, kann bei MySQL-Benutzern die Fehlermeldung „Zugriff für Benutzer „root“ verweigert“ auftreten. @'localhost' (mit Passwort: JA)." Dies kann rätselhaft sein, da es so aussieht, als ob der Benutzer über die erforderlichen Berechtigungen verfügt.

Berechtigungen überprüfen

Um zu bestätigen, dass der Benutzer über die entsprechenden Berechtigungen verfügt, führen Sie die folgenden Befehle aus :

SELECT user();
SELECT current_user();
SHOW GRANTS FOR 'root'@'localhost';
SELECT * FROM mysql.user WHERE User='root';

Diese Befehle sollten überprüfen, ob der Benutzer tatsächlich root@localhost ist und über die erforderlichen Berechtigungen verfügt. einschließlich:

  • AUSWÄHLEN, EINFÜGEN, AKTUALISIEREN, LÖSCHEN, ERSTELLEN, DROP, NEU LADEN, HERUNTERFAHREN, VERARBEITEN, DATEI, REFERENZEN, INDEX, ÄNDERN, DATENBANKEN ANZEIGEN, SUPER
  • Erstellen und bearbeiten Tabellen, Ansichten und Routinen
  • Gewähren Sie anderen Berechtigungen Benutzer

Problem: Gewähren von Berechtigungen für bestimmte Tabellen

Obwohl diese Berechtigungen vorliegen, kann beim Versuch, Berechtigungen für bestimmte Tabellen zu erteilen, ein Fehler auftreten:

GRANT ALL PRIVILEGES ON *.* TO 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]' WITH GRANT OPTION;

Dies liegt daran, dass die Tabelle „mysql.users“ für alle Benutzer außer zulässig ist root.

Lösung: Gewähren von Berechtigungen für alle Datenbanken

Um dies zu umgehen, verwenden Sie den folgenden Befehl, der Berechtigungen für alle Datenbanken außer mysql.users gewährt:

GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;

Durch die Verwendung von %. anstelle von .* wird sichergestellt, dass alle Datenbanken außer enthalten sind die mysql.users-Tabelle. Dadurch sollten Berechtigungen erfolgreich gewährt werden, ohne dass der Fehler „Zugriff verweigert“ ausgelöst wird.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Fehlermeldung „Zugriff verweigert', wenn ich MySQL-Berechtigungen erteile, obwohl ich über die erforderlichen Berechtigungen verfüge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn