Versucht
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Bekommen
FEHLER 1064 (42000): In Ihrer SQL-Syntax ist ein Fehler aufgetreten. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von 'IDENTIFIED BY' root 'WITH GRANT OPTION' in Zeile 1.
Hinweis: Dasselbe funktioniert, wenn es in früheren Versionen versucht wurde.
Auch versucht
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Bekommen
FEHLER 1410 (42000): Mit GRANT dürfen Sie keinen Benutzer erstellen
MySQL (8.0.11.0) Benutzername / Passwort ist root / root.
mysql
mysql-error-1064
mysql-8.0
Praveen
quelle
quelle
mysql -u root -p
und gebe dann das Root-Passwort ein. Dann habe ich es versuchtGRANT GRANT OPTION ON *.* TO 'root'@'%';
und ich bekomme den FehlerERROR 1410 (42000): You are not allowed to create a user with GRANT
Antworten:
Ab MySQL 8 können Sie mit dem
GRANT
Befehl keinen Benutzer mehr (implizit) erstellen . Verwenden Sie stattdessen CREATE USER , gefolgt von der GRANT- Anweisung:Vorsicht vor den Sicherheitsrisiken
WITH GRANT OPTION
, siehe:quelle
SELECT User, Host FROM mysql.user;
stattdessen aus.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
1) Das hat bei mir funktioniert. Erstellen Sie zunächst einen neuen Benutzer. Beispiel: Benutzer
foo
mit Passwortbar
2) Ersetzen Sie den folgenden Code durch einen Benutzernamen mit 'foo'.
3) Melden Sie sich als Benutzer foo an
Passwort: bar
4) Stellen Sie sicher, dass Ihre anfängliche Verbindung von Sequelize auf poo mit pw bar eingestellt ist.
quelle
Ich sehe viele (falsche) Antworten, es ist genauso einfach:
Hinweis: Anstelle einer selbst erstellten können
user
Sieroot
eine Verbindung zur Datenbank herstellen. Die Verwendung des Standard-Root-Kontos, mit dem eine Anwendung eine Verbindung zur Datenbank herstellen kann, ist jedoch nicht die bevorzugte Methode.Alternative Privilegien (seien Sie vorsichtig und denken Sie an das Prinzip der geringsten Privilegien):
Wenn Sie irgendwie auf folgenden Fehler stoßen würden:
Sie müssen die folgenden zwei Zeilen hinzufügen / ändern
/etc/mysql/my.cnf
und MySQL neu starten:quelle
GRANT ALL ON
für MySQL 8.0. Ich glaube auch, dass Sie anstelle der Deaktivierung an beliebige Befehlebind-address
binden127.0.0.1
und diese einbinden können--protocol=tcp
. Die Leistung auf lange Sicht ist auch besser als mitlocalhost
.Meine Spezifikationen:
Was hat bei mir funktioniert:
Antwort in beiden Fragen:
NB: Ich habe zuvor eine Datenbank (Datenbankname) erstellt und einen Benutzeranmeldeinformationen mit allen Berechtigungen erstellt, die allen Tabellen in der Datenbank gewährt wurden, anstatt den Standard-Root-Benutzer zu verwenden, den ich irgendwo gelesen habe. Dies ist eine bewährte Methode.
quelle
Der angegebene Benutzer ist in MySQL einfach nicht vorhanden (daher versucht MySQL, ihn mit GRANT wie vor Version 8 zu erstellen, schlägt jedoch mit den in dieser Version eingeführten Einschränkungen fehl).
MySQL ist zu diesem Zeitpunkt ziemlich dumm. Wenn Sie also 'root' @ 'localhost' haben und versuchen, 'root' @ '%' Berechtigungen zu erteilen, werden diese als unterschiedliche Benutzer behandelt und nicht als allgemeine Vorstellung für Root-Benutzer auf einem beliebigen Host, einschließlich localhost.
Die Fehlermeldung ist ebenfalls irreführend.
Wenn Sie also die Fehlermeldung erhalten, überprüfen Sie Ihre vorhandenen Benutzer mit so etwas
und erstellen Sie dann einen fehlenden Benutzer (wie von Mike empfohlen) oder passen Sie Ihren GRANT-Befehl an die tatsächlich vorhandene Benutzerspezifikation an.
quelle
Nur meine 2 Cent zu diesem Thema. Ich hatte genau das gleiche Problem beim Versuch, eine Verbindung von MySQL Workbench herzustellen. Ich verwende eine virtuelle Bitnami-MySQL-Maschine, um eine lokale Sandbox für die Entwicklung einzurichten.
In Bitnamis Tutorial soll der Befehl "Alle Berechtigungen gewähren" ausgeführt werden:
Das hat eindeutig nicht funktioniert, ich habe es endlich mit Mike Lischkes Antwort zum Laufen gebracht.
Was meiner Meinung nach passiert ist, war, dass dem Benutzer root @% die falschen Anmeldeinformationen zugeordnet waren. Wenn Sie also versucht haben, die Berechtigungen des Benutzers zu ändern, und ohne Glück versuchen, versuchen Sie:
Von der MySQL-Konsole:
Benutzer auflisten (hilfreich, um alle Benutzer anzuzeigen):
Gewünschten Benutzer löschen:
Benutzer erstellen und Berechtigungen erteilen:
Führen Sie diesen Befehl aus:
Suchen Sie Ihre MySQL-Konfigurationsdatei 'my.cnf' und suchen Sie nach einer Zeile, die folgendermaßen aussieht:
und kommentiere es mit einem '#':
Starten Sie dann Ihren MySQL-Dienst neu.
Hoffe, das hilft jemandem, der das gleiche Problem hat!
quelle
Das hat bei mir funktioniert:
quelle
Überprüfen Sie, ob Ihr Benutzername und Ihre Domain mit den zuvor erstellten übereinstimmen. MySQL wählt Konto anhand der beiden Spalten in der Benutzertabelle aus. Wenn es anders ist, könnte MySQL denken, dass Sie ein neues Konto durch Grant erstellen möchten, das nach Version 8.0 nicht mehr unterstützt wird.
quelle
Meine Spezifikationen:
Was hat bei mir funktioniert:
quelle
Nun, ich hatte gerade das gleiche Problem. Selbst wenn die Route '%' hatte, konnte keine Remoteverbindung hergestellt werden. Schauen Sie sich nun die
my.ini
Datei (Konfigurationsdatei in Windows) anbind-address
Anweisung übersehen.Also ... ich geputtet diese
bind-address = *
nach[mysqld]
und neu gestartet wird den Dienst. Jetzt gehts!quelle
1. Berechtigungen gewähren
mysql> GEWÄHRLEISTUNG FÜR ALLE PRIVILEGIEN. TO 'root' @ '%' WITH GRANT OPTION;
mysql> SPÜLPRIVILEGIEN
2. Überprüfen Sie die Benutzertabelle:
mysql> benutze mysql
MySQL> Host auswählen, Benutzer von Benutzer
3. Ändern Sie die Konfigurationsdatei
mysql default bind ip: 127.0.0.1, wenn wir Remote-Besuchsdienste möchten, löschen Sie einfach config
4. Starten Sie die Dienste endgültig neu
Brauservices starten MySQL neu
quelle
Dies kann funktionieren:
quelle
Ich hatte das gleiche Problem, das mich hierher führte. Insbesondere für die lokale Entwicklung, wollte ich tun können ,
mysql -u root -p
ohnesudo
. Ich möchte keinen neuen Benutzer erstellen. Ich möchteroot
von einer lokalen PHP-Web-App verwenden.Die Fehlermeldung ist irreführend, da an den Standardbenutzerrechten nichts falsch war
'root'@'%'
.Stattdessen bestand die Lösung, wie in den anderen Antworten erwähnt, einfach darin,
bind-address=0.0.0.0
stattbind-address=127.0.0.1
in meiner/etc/mysql/mysql.conf.d/mysqld.cnf
Konfiguration festzulegen. Ansonsten waren keine Änderungen erforderlich.quelle
Ich hatte das gleiche Problem unter CentOS und dies funktionierte für mich (Version: 8.0.11):
quelle