$ ./ mysqladmin -u root -p ' redigiert '
Passwort eingeben:
mysqladmin: connect to server at 'localhost' fehlgeschlagener Fehler:
'Zugriff verweigert für Benutzer' root '@' localhost '(mit Passwort: JA)'
Wie kann ich das beheben?
/etc/my.cnf
_ oder _/etc/mysql/my.cnf
_, je nach Distribution.skip-grant-tables
_ unter _[mysqld]
_ hinzu.mysql -u root -p
_mysql> flush privileges;
_ aus.ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
mysql -u root -p
_Alle Lösungen, die ich fand, waren viel komplexer als nötig und keine funktionierte für mich. Hier ist die Lösung, die mein Problem gelöst hat. Es ist nicht erforderlich, mysqld neu zu starten oder mit speziellen Berechtigungen zu starten.
Sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Mit einer einzigen Abfrage ändern wir das auth_plugin in mysql_native_password und setzen das root-Passwort an root (Sie können es in der Abfrage jederzeit ändern)
Jetzt sollten Sie sich mit root anmelden können. Weitere Informationen finden Sie in MySQL-Dokumentation
(beenden Sie die MySQL-Konsole mit Strg + D oder durch Eingabe von exit )
Ich habe viele Schritte unternommen, um dieses Problem zu beheben. Es gibt so viele Quellen für mögliche Lösungen für dieses Problem, dass es schwierig ist, den Sinn aus dem Unsinn herauszufiltern. Ich habe endlich eine gute Lösung gefunden hier :
Schritt 1: Identifizieren Sie die Datenbankversion
$ mysql --version
Mit MySQL sehen Sie einige Ausgaben wie diese:
$ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
Oder Ausgabe wie folgt für MariaDB:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
Notieren Sie sich, welche Datenbank und welche Version Sie ausführen, da Sie diese später verwenden werden. Als Nächstes müssen Sie die Datenbank stoppen, damit Sie manuell darauf zugreifen können.
Schritt 2: Anhalten des Datenbankservers
Um das root-Passwort zu ändern, müssen Sie den Datenbankserver vorher herunterfahren.
Das können Sie für MySQL tun mit:
$ Sudo systemctl stop mysql
Und für MariaDB mit:
$ Sudo systemctl stop mariadb
Schritt 3: Neustarten des Datenbankservers ohne Berechtigungsprüfung
Wenn Sie MySQL und MariaDB ausführen, ohne Informationen zu Benutzerberechtigungen zu laden, können Sie mit Root-Berechtigungen auf die Datenbankbefehlszeile zugreifen, ohne ein Kennwort anzugeben. Auf diese Weise können Sie auf die Datenbank zugreifen, ohne es zu wissen.
Zu diesem Zweck müssen Sie verhindern, dass die Datenbank die Berechtigungstabellen lädt, in denen Informationen zu Benutzerrechten gespeichert sind. Da dies ein Sicherheitsrisiko darstellt, sollten Sie auch das Netzwerk überspringen, um zu verhindern, dass andere Clients eine Verbindung herstellen.
Starten Sie die Datenbank, ohne die Grant-Tabellen zu laden oder das Netzwerk zu aktivieren:
$ Sudo mysqld_safe --skip-grant-tables --skip-networking &
Das kaufmännische Und am Ende dieses Befehls bewirkt, dass dieser Prozess im Hintergrund ausgeführt wird, sodass Sie Ihr Terminal weiterhin verwenden können.
Jetzt können Sie sich als Root-Benutzer mit der Datenbank verbinden, der nicht nach einem Passwort fragen sollte.
$ mysql -u root
Stattdessen wird sofort eine Shell-Eingabeaufforderung für die Datenbank angezeigt.
MySQL-Eingabeaufforderung
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
MariaDB-Eingabeaufforderung
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Jetzt, da Sie Root-Zugriff haben, können Sie das Root-Passwort ändern.
Schritt 4: Ändern des Root-Passworts
mysql> FLUSH PRIVILEGES;
Jetzt können wir das root-Passwort tatsächlich ändern.
Für MySQL 5.7.6 und neuer sowie MariaDB 10.1.20 und neuer , benutze den folgenden Befehl:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Für MySQL 5.7.5 und älter sowie MariaDB 10.1.20 und älter , verwenden:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Stellen Sie sicher, dass new_password
durch das neue Passwort Ihrer Wahl ersetzt wird.
Hinweis: Wenn der Befehl ALTER USER
nicht funktioniert, deutet dies normalerweise auf ein größeres Problem hin. Sie können jedoch versuchen, UPDATE ... SET
stattdessen das root-Passwort zurückzusetzen.
[WICHTIG] Dies ist die spezifische Zeile, die mein spezielles Problem behoben hat:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
Denken Sie daran, die Grant-Tabellen danach neu zu laden.
In beiden Fällen sollte eine Bestätigung angezeigt werden, dass der Befehl erfolgreich ausgeführt wurde.
Query OK, 0 rows affected (0.00 sec)
Das Kennwort wurde geändert, sodass Sie jetzt die manuelle Instanz des Datenbankservers stoppen und wie zuvor neu starten können.
Schritt 5: Starten Sie den Datenbankserver normal neu
Das Tutorial enthält einige weitere Schritte zum Neustart der Datenbank, aber das einzige, was ich verwendet habe, war Folgendes:
Verwenden Sie für MySQL: $ Sudo systemctl starten Sie mysql
Verwenden Sie für MariaDB:
$ Sudo systemctl start mariadb
Jetzt können Sie bestätigen, dass das neue Passwort korrekt angewendet wurde, indem Sie Folgendes ausführen:
$ mysql -u root -p
Der Befehl sollte nun zur Eingabe des neu zugewiesenen Passworts auffordern. Geben Sie es ein, und Sie sollten wie erwartet Zugriff auf die Datenbank-Eingabeaufforderung erhalten.
Fazit
Sie haben nun Administratorzugriff auf den MySQL- oder MariaDB-Server, der wiederhergestellt wurde. Stellen Sie sicher, dass das von Ihnen gewählte neue Root-Passwort sicher und sicher ist, und bewahren Sie es an einem sicheren Ort auf.
Führen Sie Folgendes aus, um eine Verbindung als root
(ohne Kennwort) herzustellen
Sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf
Wenn Sie nicht jedes Mal --defaults-file
hinzufügen möchten, wenn Sie eine Verbindung als root
herstellen möchten, können Sie /etc/mysql/debian.cnf
in Ihr Ausgangsverzeichnis kopieren:
Sudo cp /etc/mysql/debian.cnf ~/.my.cnf
und dann:
Sudo mysql
Für neue Linux-Benutzer könnte dies eine entmutigende Aufgabe sein. Lassen Sie mich dies mit MySQL 8 aktualisieren (die aktuellste Version ist 8.0.12, Stand 12.09.2018).
Das ist es.
Nachdem ich alle anderen Antworten ausprobiert hatte, funktionierte dies schließlich für mich
Sudo mysql -- It does not ask me for any password
-- Then in MariaDB/MySQL console:
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
exit;
Ich habe die Antwort in diesem Beitrag gefunden: https://medium.com/@chiragpatel_52497/solved-error-access-denied-for-user-root-localhost-of-mysql-programming-school-6e3611838d06 =
In Ihrer MySQL-Workbench können Sie in der linken Seitenleiste unter Verwaltung "Benutzer und Berechtigungen" auswählen, unter Benutzerkonten auf root klicken und im rechten Bereich auf die Registerkarte "Kontolimits" klicken, um die maximale Anzahl an Abfragen, Updates usw. zu erhöhen Klicken Sie dann auf die Registerkarte "Administrative Rollen" und aktivieren Sie die Kontrollkästchen, um dem Konto Zugriff zu gewähren. Ich hoffe, das hilft!
Ich habe dies getan, um mein root-Passwort bei der Ersteinrichtung von MySQL in OSx festzulegen. Öffnen Sie ein Terminal.
Sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'
Schließen Sie das Terminal und öffnen Sie ein neues Terminal. Die folgenden Schritte werden unter Linux ausgeführt, um das root-Passwort festzulegen.
Sudo /usr/local/mysql/support-files/mysql.server stop
Sudo mysqld_safe --skip-grant-tables
(Sudo mysqld_safe --skip-grant-tables: Das hat beim ersten Mal nicht funktioniert. Aber beim zweiten Versuch war es ein Erfolg.)
Dann melden Sie sich bei MySQL an
mysql -u root
FLUSH PRIVILEGES;
Ändern Sie nun das Passwort:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
Starten Sie MySQL neu:
Sudo /usr/local/mysql/support-files/mysql.server stop
Sudo /usr/local/mysql/support-files/mysql.server start
Dies kann vorkommen, wenn Sie nicht über ausreichende Berechtigungen verfügen. Geben Sie su
ein, geben Sie das root-Passwort ein und versuchen Sie es erneut.
In meinem Fall unter Debian 10 ist der Fehler
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
wurde gelöst von (GOOD WAY)
Sudo mysql -u root -p mysql
SCHLECHTER WEG:
mysql -u root -p mysql
Wenn Sie wie ich sind und alle obigen Vorschläge fehlgeschlagen sind, deinstallieren Sie alle Versionen von mysql auf Ihrem Computer und suchen Sie mit dem Befehl Sudo find / -name "mysql"
und rm -rf
nach allen Dateien oder Verzeichnissen mit mysql Name angehängt (Sie sollten Dateien überspringen, die sich auf Programmiersprachenbibliotheken beziehen). Installieren Sie jetzt eine neue Version von MySQL und genießen Sie. NB: Sie werden alle Ihre Daten verlieren, also wägen Sie zuerst Ihre Optionen ab.