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
Freigeben: 2024-12-01 00:49:15
Original
494 Leute haben es durchsucht

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';
Nach dem Login kopieren

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage