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:
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!