2016-05-22 1 views
1

Dieser Fehler ist aufgetreten, wenn ich einem gerade neu erstellten root-Konto alle Berechtigungen erteilt habe.MySQL "mysql gibt es keine solche Gewährung für den Benutzer definiert"

Schritte, das Problem zu produzieren:

CREATE USER 'root'@'localhost'; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; 
FLUSH PRIVILEGES; 
SHOW GRANTS for 'root'@'localhost'; 

Nach „show grants“ ich die Fehlermeldung „mysql gibt es keine solche Berechtigung für den Benutzer‚root‘auf dem Host definiert‚localhost‘“ bekam. Es gab keine Fehler nach der Ausführung der ersten drei Befehle. Der neue Benutzer wurde erfolgreich erstellt.

Wie löse ich dieses Problem?

Weitere Informationen: Ich benutze MySQL 5.7 auf meinem MacOS Laptop (OSX 10.10.5).

+0

Ich habe diesen Code auf MySQL 5.6.25 unter OSX 10.11.4 getestet und es funktioniert gut (nicht mit 'root', da dieses Konto bereits existierte). – M4tini

+0

Ich habe diesen Code am 5.7.12 auf Ubuntu getestet, es funktioniert. –

Antwort

0

Es ist nichts falsch mit Ihrem gepostet Code aber als Vermutung versuchen, mit Wildcard-Symbol % wie

SHOW GRANTS for 'root'@'%'; 

(OR)

Als Alternative loggen Sie sich mit Ihrem erstellten Benutzer 'root'@'localhost' und nur SHOW GRANTS verwenden. Siehe Documentation

+0

Danke für Ihre Antwort. Da 'root' @ '%' auf dem DB-Server nicht existiert, habe ich den gleichen Fehler, wenn 'SHOW GRANTS' für 'root' @ '%' verwendet wurde. Auch nach der Eingabe der aufgelisteten Befehle hat der erstellte Benutzer 'root' @ 'localhost' kein Privileg mehr, auch kein 'Nutzungsrecht'. Also kann ich mich nicht einmal mit diesem Konto einloggen. – eaglesky

0

Ich denke nicht, mysql können Sie ein anderes root-Konto erstellen. Das Erstellen verursacht also einen Fehler.

CREATE USER 'root'@'localhost'; 

ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost' 

Sie sollten in der Benutzertabelle für das bestehende Root-Account überprüfen und Sie werden die Platzhalter sein ‚%‘ finden, die Sie nicht über einen lokalen Host Root-Benutzer bedeuten sollte erstellen müssen.

select * from user where user = 'root'; 

Erkundigung Zuschüsse auf root localhost funktionieren sollte zu zeigen, und was für mich zu arbeiten.

show grants for 'root'@'localhost'; 
+0

Eigentlich hatte ich den Benutzer 'root' @ '%' gelöscht, bevor ich alle diese Befehle eingegeben habe. Der Benutzer 'root' @ 'localhost' wurde tatsächlich erfolgreich erstellt. Ich konnte mich mit diesem Konto anmelden, bevor ich seine Berechtigungen änderte. – eaglesky

0

Schritt-1: Sudo mysql -u root -p

Schritt-2: REVOKE ALLE PRIVILEGIEN, GRANT OPTION FROM 'Benutzername' @ 'localhost';

Ex.- REVOKE ALLE PRIVILEGES, GRANT OPTION VON 'admin' @ 'localhost';

Schritt-3: FLUSH PRIVILEGIEN;

Ich denke, es wird funktionieren.

Verwandte Themen