$ ./mysqladmin -u root -p ' redigiert '
Passwort eingeben:
mysqladmin: Verbindung zum Server bei 'localhost' fehlgeschlagen Fehler:
'Zugriff für Benutzer' root '@' localhost 'verweigert (mit Passwort: YES)'
Wie kann ich das beheben?
mysql
sql
database
database-connection
Harte Trivedi
quelle
quelle
~/.my.cnf
Datei zu entfernen, falls vorhanden .-p
Option für sich und MySQL fordert Sie zur Eingabe eines Passworts auf.Antworten:
/etc/my.cnf
oder/etc/mysql/my.cnf
, je nach Distribution.skip-grant-tables
unter hinzu[mysqld]
mysql -u root -p
mysql> flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
mysql -u root -p
quelle
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'' at line 1
set PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
Ich tat dies nach Schritt 5. So sah meine Eingabeaufforderung Ausgabe:MariaDB [(none)]> MariaDB [(none)]> set PASSWORD FOR 'root'@'localhost' = PASSWORD('root'); Query OK, 0 rows affected (0.00 sec)
sudo systemctl restart mariadb
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. Sie müssen mysqld nicht neu starten oder mit speziellen Berechtigungen starten.
Mit einer einzigen Abfrage ändern wir das auth_plugin in mysql_native_password und setzen das root-Passwort auf root ( Sie können es gerne in der Abfrage ändern).
Jetzt sollten Sie sich mit root anmelden können. Weitere Informationen finden Sie in der MySQL-Dokumentation
(Beenden Sie die MySQL-Konsole mit Strg + D oder geben Sie exit ein. )
quelle
Ich habe viele Schritte versucht, 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. Hier habe ich endlich eine gute Lösung gefunden :
Schritt 1: Identifizieren Sie die Datenbankversion
Mit MySQL sehen Sie eine Ausgabe wie diese:
Oder für MariaDB wie folgt ausgeben:
Notieren Sie sich, welche Datenbank und welche Version Sie ausführen, da Sie sie später verwenden werden. Als Nächstes müssen Sie die Datenbank stoppen, damit Sie manuell darauf zugreifen können.
Schritt 2: Stoppen des Datenbankservers
Um das Root-Passwort zu ändern, müssen Sie den Datenbankserver vorher herunterfahren.
Sie können dies für MySQL tun mit:
Und für MariaDB mit:
Schritt 3: Neustarten des Datenbankservers ohne Berechtigungsprüfung
Wenn Sie MySQL und MariaDB ausführen, ohne Informationen zu Benutzerrechten zu laden, können Sie mit Root-Rechten auf die Datenbankbefehlszeile zugreifen, ohne ein Kennwort anzugeben. Auf diese Weise können Sie auf die Datenbank zugreifen, ohne es zu wissen.
Dazu müssen Sie verhindern, dass die Datenbank die Grant-Tabellen lädt, in denen Benutzerberechtigungsinformationen gespeichert sind. Da dies ein gewisses 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:
Durch das kaufmännische Und am Ende dieses Befehls wird dieser Prozess im Hintergrund ausgeführt, sodass Sie Ihr Terminal weiterhin verwenden können.
Jetzt können Sie als Root-Benutzer eine Verbindung zur Datenbank herstellen, ohne nach einem Kennwort fragen zu müssen.
Stattdessen wird sofort eine Datenbank-Shell-Eingabeaufforderung angezeigt.
MySQL-Eingabeaufforderung
MariaDB Eingabeaufforderung
Nachdem Sie Root-Zugriff haben, können Sie das Root-Passwort ändern.
Schritt 4: Ändern des Root-Passworts
Jetzt können wir das Root-Passwort tatsächlich ändern.
Verwenden Sie für MySQL 5.7.6 und höher sowie MariaDB 10.1.20 und neuer den folgenden Befehl:
Verwenden Sie für MySQL 5.7.5 und älter sowie MariaDB 10.1.20 und älter :
Stellen Sie sicher, dass
new_password
Sie es durch ein neues Passwort Ihrer Wahl ersetzen .Hinweis: Wenn der
ALTER USER
Befehl nicht funktioniert, weist er normalerweise auf ein größeres Problem hin. Sie können jedoch versuchenUPDATE ... SET
, stattdessen das Root-Passwort zurückzusetzen.[WICHTIG] Dies ist die spezifische Zeile, die mein spezielles Problem behoben hat:
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.
Das Kennwort wurde geändert, sodass Sie die manuelle Instanz des Datenbankservers jetzt 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. Ich habe jedoch nur Folgendes verwendet:
Verwenden Sie für MySQL: $ sudo systemctl start mysql
Verwenden Sie für MariaDB:
Jetzt können Sie bestätigen, dass das neue Passwort korrekt angewendet wurde, indem Sie Folgendes ausführen:
Der Befehl sollte nun zur Eingabe des neu zugewiesenen Kennworts auffordern. Geben Sie es ein, und Sie sollten wie erwartet Zugriff auf die Datenbankaufforderung erhalten.
Fazit
Sie haben jetzt Administratorzugriff auf den wiederhergestellten MySQL- oder MariaDB-Server. 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.
quelle
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
hat mir das Leben gerettet!Keine der oben genannten Antworten hat mir bei diesem Problem geholfen. Hier ist die Lösung, die ich gefunden habe .
Der relevante Teil:
quelle
Für Ubuntu / Debian-Benutzer
( Kann auf anderen Distributionen funktionieren, insbesondere auf Debian-basierten)
Führen Sie die folgenden Schritte aus, um eine Verbindung herzustellen
root
(ohne Kennwort).Wenn Sie nicht
--defaults-file
jedes Mal hinzufügen möchten, wenn Sie eine Verbindung herstellen möchtenroot
, können Sie Folgendes/etc/mysql/debian.cnf
in Ihr Ausgangsverzeichnis kopieren :und dann:
quelle
Nachdem ich alle anderen Antworten ausprobiert hatte, funktionierte dies schließlich für mich
Ich fand die Antwort in diesem Beitrag: https://medium.com/@chiragpatel_52497/solved-error-access-denied-for-user-root-localhost-of-mysql-programming-school-6e3611838d06
quelle
skip-grant-table
(my.conf oder inmysql
command) haben nicht funktioniert. Ich konnte über ein Dienstkonto ( askubuntu.com/a/120769/169836 ) einsteigen ,UPDATE mysql.user SET Password=PASSWORD('') WHERE User='root';
funktionierte aber nicht. Nur wenn der Plugin-Teil verwendet wurde, funktionierten die Dinge. Danke ~Für neue Linux-Benutzer könnte dies eine entmutigende Aufgabe sein. Lassen Sie mich dies mit MySQL 8 aktualisieren (die aktuellste verfügbare Version ist 8.0.12, Stand 12.09.2018)
Das ist es.
quelle
In Ihrer MySQL-Workbench können Sie zur linken Seitenleiste gehen, unter Verwaltung "Benutzer und Berechtigungen" auswählen, unter Benutzerkonten auf root klicken und im rechten Abschnitt auf die Registerkarte "Kontolimits" klicken, um die maximale Anzahl von Abfragen, Aktualisierungen 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. Hoffentlich hilft das!
quelle
Ich habe dies getan, um mein Root-Passwort bei der Ersteinrichtung von MySQL in OSx festzulegen. Öffnen Sie ein Terminal.
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 mysqld_safe --skip-grant-tables: Dies hat beim ersten Mal nicht funktioniert. Aber beim zweiten Versuch war der Erfolg erfolgreich.)
Dann melden Sie sich bei MySQL an
Ändern Sie nun das Passwort:
Starten Sie MySQL neu:
quelle
In meinem Fall unter Debian 10 der Fehler
wurde gelöst von (GOOD WAY)
SCHLECHTER WEG:
quelle
Ugh- nichts hat bei mir funktioniert! Ich habe eine CentOS 7.4-Maschine mit Mariadb 5.5.64.
Was ich tun musste, war dies, gleich nach der Installation von Mariadb von Yum;
Das
mysql_secure_installation
führt Sie durch eine Reihe von Schritten, einschließlich "Root-Passwort festlegen? [J / n]". Sagen Sie einfach "y" und geben Sie ihm ein Passwort. Beantworten Sie die anderen Fragen nach Ihren Wünschen.Dann können Sie mit Ihrem Passwort mit einsteigen
Es wird überleben
Der Schlüssel
Dann überprüfte ich den
/bin/mysql_secure_installation
Quellcode, um herauszufinden, wie es magisch war, das Root-Passwort zu ändern, und keine der anderen Antworten hier konnte. Das Importbit ist:... heißt es
SET Password=...
und nichtSET authentication_string = PASSWORD...
. Das richtige Verfahren für diese Version (5.5.64) lautet also:Über die Eingabeaufforderung mysql>:
töte das laufende mysqld_safe. Starten Sie Mariadb neu. Als root anmelden :
mysql -u -p
. Verwenden Sie Ihr neues Passwort.Wenn Sie möchten, können Sie alle Root-Passwörter gleichzeitig festlegen. Ich finde das klug:
Dadurch werden alle Root-Passwörter aktualisiert: dh für "localhost", "127.0.0.1" und ":: 1".
Wenn ich in Zukunft zu RHEL8 gehe oder was Sie haben, werde ich versuchen, mich daran zu erinnern, die / bin / mysql_secure_installation zu überprüfen und zu sehen, wie die Jungs es gemacht haben, die Mariadb für dieses Betriebssystem konfiguriert haben.
quelle
Wenn Sie wie ich sind und alle oben genannten Vorschläge fehlgeschlagen sind, deinstallieren Sie alle Versionen von MySQL auf Ihrem Computer, suchen Sie mit diesem Befehl nach allen verbleibenden MySQL-Dateien
sudo find / -name "mysql"
und nachrm -rf
jeder Datei oder jedem Verzeichnis mit dem angehängten MySQL-Namen (Sie sollten verwandte Dateien überspringen zu Programmiersprachenbibliotheken). Installieren Sie jetzt eine neue Version von MySQL und genießen Sie. NB: Sie verlieren alle Ihre Daten, wägen Sie also zuerst Ihre Optionen ab.quelle
Es kann passieren, wenn Sie nicht über genügend Berechtigungen verfügen. Geben Sie ein
su
, geben Sie das Root-Passwort ein und versuchen Sie es erneut.quelle
Okay, ich weiß, dass dies ein alter Thread ist, aber wenn Sie diese Seite wie ich über Google erreicht haben und keine der oben genannten Lösungen funktioniert hat, hat sich herausgestellt, dass der Fehler 100% Dummheit auf meiner Seite war. Ich habe keine Verbindung zum Server hergestellt. Einmal verbunden war alles glattes Segeln.
Falls es hilfreich ist, mein Setup zu kennen, verwende ich Sequel Pro und versuche, mithilfe des NPM-Pakets mysql eine Verbindung mit Node herzustellen. Ich dachte nicht, dass ich tatsächlich eine Verbindung herstellen müsste (außer Sequel Pro ausführen), weil ich das bereits über meine App tat.
quelle
Lösung: Aufgeben!
Hören Sie mich an, ich habe ungefähr zwei ganze Tage damit verbracht, MySQL erfolglos zum Laufen zu bringen. Ich habe mich immer an Berechtigungsfehler gehalten, von denen keiner durch die Antworten in diesem Thread behoben wurde. Es kam zu dem Punkt, dass ich dachte, wenn ich fortfuhr, würde ich verrückt werden.
Aus Geduld, damit es funktioniert, habe ich den Befehl zum Installieren von SQLite gesendet, nur mit 450 KB, und es hat von Anfang an perfekt funktioniert.
Wenn Sie nicht die Geduld eines Heiligen haben, entscheiden Sie sich für SQLite und sparen Sie sich viel Zeit, Mühe, Schmerz und Speicherplatz.
quelle