Die beste Lösung zum Zurücksetzen des Root-Passworts von MySQL 8.0.23

Die beste Lösung zum Zurücksetzen des Root-Passworts von MySQL 8.0.23

Diese Methode wurde am 7. Februar 2021 bearbeitet. Die von mir verwendete Version ist 8.0.23. Die Ursache des Vorfalls begann mit Professor Yuan Longping ... Es begann mit einem Lehrbuch. Es gibt ein Kapitel mit dem Titel „MySQL-Sicherheitsverwaltung und Berechtigungsverwaltung“, in dem das Ändern des Root-Kontos erwähnt wird

ps: Diese Methode eignet sich für alle, die das Root-Passwort vergessen, geändert oder durcheinander gebracht haben

Ganz pragmatisch habe ich in meine MySQL-Datenbank eingegeben (aktuell als Root angemeldet):

Benutzersatz-Authentifizierungszeichenfolge = MD5("123") aktualisieren, wobei Benutzer = "root" und Host = "localhost" ist;
Berechtigungen leeren;

Hier muss ich über das aktuelle Baidu Google-Tutorial sprechen. Die Schüler können sich zunächst ihre eigene Benutzertabellenstruktur ansehen. In der Benutzertabelle interessieren uns im Allgemeinen am meisten drei Felder, nämlich die Hostspalte von localhost, die Benutzerspalte des Benutzernamenstamms und die Spalte authentication_string, in der das Kennwort gespeichert ist

Beschreibung des Benutzers;

Hinweis: Das Feld zum Speichern des Passworts ist nicht mehr Passwort (es kann in der alten Version so sein, und viele Tutorials zum Ändern des Root-Passworts sind immer noch Passwort). Zweitens wendet meine neuere Version hier keine Passwortfunktion an. Das Lehrbuch verwendet MD5-Verschlüsselung. Derzeit sind viele Baidu-Lehrbücher noch wie folgt. Diese Methode ist nicht mehr anwendbar.

...Passwort = Passwort("123")…

Nachdem ich den obigen Code eingegeben hatte, meldete ich mich ab, startete den Server neu und versuchte, mich mit dem neuen Passwort 123 anzumelden, aber es kam eine Fehlermeldung, dass das Passwort falsch sei.

FEHLER 1045 (28000): Zugriff für Benutzer „root“@„localhost“ verweigert (mit Passwort: JA)

Danach habe ich drei Stunden damit verbracht, den Baidu-Guide zu durchsuchen und zu versuchen, mein Passwort abzurufen, aber alles endete erfolglos.
Nach 24 Stunden habe ich versehentlich das im ursprünglichen Authentifizierungsstring gespeicherte Passwort gelöscht und dann ein neues Passwort festgelegt. Hier sind einige praktische Informationen, die ich selbst getestet habe ~

1. Passwortfreie Anmeldung

Richten Sie die MySQL-Anmeldung auf eine kennwortfreie Anmeldung ein (ich weiß nicht, ob ich mich mit dem Konto debian-sys-maint in der Konfiguration von debian.cnf anmelden und das Root-Kennwort ändern kann. Ich befürchte, dass die Debian-Berechtigungen nicht ausreichen, um das Root-Kennwort zu ändern, daher habe ich die kennwortfreie Root-Anmeldung gewählt. Interessierte Studenten können es versuchen. Dieser Schritt dient hauptsächlich dazu, sich beim Server anmelden zu können). Die spezifische Methode lautet:
Geben Sie die Konfigurationsdatei ein, meine Konfigurationsdatei befindet sich in

/etc/mysql/mysql.conf.d

Öffnen Sie es mit sudo, da Sie su-Berechtigungen benötigen, um die etc-Konfiguration zu ändern. Da ich die Konfiguration in meinem Home-Verzeichnis nicht angepasst habe, sind natürlich alle Standardeinstellungen. Diese Konfiguration ist wahrscheinlich bei jedem anders und Sie haben sie möglicherweise selbst konfiguriert. Anschließend können Sie mysql --help auf dem Terminal verwenden, um zu sehen, welche Konfiguration zu diesem Zeitpunkt wirksam ist. Natürlich ist es nicht einfach, alles auf einmal zu finden. Beispielsweise befindet sich meine aktuelle Konfigurationsdatei in der zweiten /etc/mysql/my.cnf, aber wenn ich sie öffne, gibt es keine Konfigurationsoption. Sie enthält zwei Pfade. Dieser Pfad ist die eigentliche Konfigurationsdatei, genau wie eine „verschachtelte“

Bildbeschreibung hier einfügen

sudo vim mysqld.cnf

Nach dem Öffnen fügen Sie eine Zeile unterhalb von [mysqld] um Zeile 15 ein

Bildbeschreibung hier einfügen

Dann speichern und vim beenden.

2. Löschen Sie das Authentifizierungs-Passwort

Eigentlich bin ich aus Versehen in diesen Schritt gestolpert und wurde von diversen kopierten Tutorials im Internet in die Irre geführt. Als ich heute Abend die Benutzertabelle studierte, sah ich, dass das Plugin-Feld standardmäßig auf caching_sha2_password eingestellt war, also dachte ich, dass ich vorher vielleicht nicht MD5-Verschlüsselung hätte verwenden sollen, sondern SHA2, also:
Hinweis: Dies ist ein kritischer Schritt

Benutzer aktualisieren, Authentication_String = sha2("1234",32) wobei Benutzer = „root“ ist;
Berechtigungen leeren;

Dann habe ich mir die Stammdaten in der Benutzertabelle angesehen und festgestellt, dass der Wert von authentication_string null geworden war. An diesem Punkt hatte ich das Gefühl, dass ich mich tatsächlich ohne Passwort anmelden könnte. Kehren Sie zur Konfigurationsdatei zurück (beachten Sie, dass sudo verwendet wird) und fügen Sie die obige Codezeile zur Konfigurationsdatei hinzu.

Skip-Grant-Tabellen

Löschen Sie es, starten Sie den MySQL-Server neu und melden Sie sich an

mysql -u root

Wie erwartet kann ich mich anmelden, eine echte passwortfreie Anmeldung, da das Passwort des Root-Kontos zu diesem Zeitpunkt gelöscht wurde, aber ich verstehe nicht, warum der SHA2-Digest-Algorithmus kein Passwort berechnet, sondern ein Passwort löscht. Ich bin sicher, jemand weiß das ...

3. Setzen Sie Ihr Passwort zurück

Das Zurücksetzen des Passworts ist einfach und erfordert nur eine Codezeile:

ALTER USER 'root'@'localhost' IDENTIFIZIERT MIT mysql_native_password DURCH '123';

PS: Nach der ersten Installation von MySQL gibt es kein Kennwort. Wenn Sie sich zum ersten Mal beim Server anmelden, müssen Sie sich möglicherweise mit sudo mysql -uroot anmelden. Legen Sie nach der Anmeldung das Root-Kennwort von MySQL selbst fest. Die Einstellungsmethode ist genau dieselbe wie im obigen Code.

4. Ende

Danach können Sie sich mit dem neuen Passwort wieder bei MySQL anmelden

mysql -u root -p123

5. Zuletzt

  • Dieses Mal habe ich auch versehentlich das Root-Passwort gelöscht. Das genaue Prinzip ist nicht klar. Warum wurde beispielsweise das Feld authentication_string des Root-Passworts bei Verwendung von sha2 zu NULL? Wenn Ihr Plugin MD5 ist, ist es möglicherweise richtig, MD5 zu verwenden. Wenn es sha1 ist, versuchen Sie es mit sha1. Ich habe das offizielle Dokument nicht gelesen, daher war der gesamte Vorgang sehr mühsam. Daher ist dies streng genommen ein Fragenbeitrag. Ich warte auf die Großen. Danke.
  • Viele Stellen werden möglicherweise nicht im Detail erklärt, z. B. Neustart der Datenbank, Konfigurationsdateien, wie man das Debian-Sys-Maint-Konto findet, Vim-Bearbeitung usw. Wenn Sie Fragen haben, können Sie diese gerne stellen. Ich bin oft auf csdn und immer da.
  • Das System ist Ubuntu, und die Mac-Methode sollte dieselbe sein. Die Hauptsache ist, dass die MySQL-Konfigurationsdatei von Mac optimiert wurde, sodass Sie selbst eine my.cnf erstellen müssen. Die meisten Schüler sollten sie im Home-Verzeichnis ablegen, sodass der Dateispeicherort nicht mit meinem identisch sein muss.
  • Möglicherweise verwenden Sie noch eine ältere Version, z. B. 5.x. Die Methoden im Internet sind möglicherweise immer noch anwendbar, aber diese Methode ist definitiv nicht anwendbar (da die Kennwortfelder in der Benutzertabelle unterschiedlich sind). Achten Sie daher auf die Version.

Dies ist das Ende dieses Artikels über die optimale Lösung zum Zurücksetzen des Root-Passworts von MySQL Version 8.0.23. Weitere Informationen zum Zurücksetzen des Root-Passworts von MySQL 8.0.23 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Grafisches Tutorial zur Installation und Konfiguration der MySQL-Version 8.0.24
  • Einige Verbesserungen in MySQL 8.0.24 Release Note
  • Implementierung der MVCC-Mehrversions-Parallelitätskontrolle von MySQL
  • Informationen zum Konfigurationsproblem bei der Verbindung von MyBatis mit der MySql8.0-Version
  • So lösen Sie das Problem, dass Seata die MySQL 8-Version nicht verwenden kann
  • Detaillierte Erklärung der Verbindung von DBeaver zu MySQL Version 8 und höher und Lösung möglicher Probleme
  • Bei der Verwendung von mybatis-generator mit mysql8.0.3 in IDEA sind Fehler aufgetreten
  • Lösung für das Problem des verstümmelten Codes in MySQL 5.x
  • Detailliertes Tutorial zur Installation der MySQL 8.0.20-Datenbank auf CentOS 7
  • Lösung für den ONLY_FULL_GROUP_BY-Fehler in Mysql5.7 und höher
  • Lösen Sie das Installationsproblem der mysql8.0.19 Winx64-Version
  • Kompatibilitätsprobleme mit Django 2.2 und PyMySQL
  • Schritte zur Installation von MySQL 5.7 im Binärmodus und zur Optimierung des Systems unter Linux
  • Installation verschiedener Versionen von MySQL 8.0.18 und während der Installation aufgetretene Probleme (Zusammenfassung)
  • Sehr detaillierte Anleitung zum Upgrade der MySQL-Version

<<:  vue.js Router verschachtelte Routen

>>:  CSS entfernt die Hintergrundfarbe von Elementen, die beim Anklicken auf dem mobilen Endgerät generiert werden (empfohlen)

Artikel empfehlen

Design-Tipps: Wir glauben, es wird Ihnen gefallen

<br />Wenn Sie sich diesen Titel ansehen, ko...

So verwenden Sie die JSZip-Komprimierung in CocosCreator

CocosCreator-Version: 2.4.2 Praktische Projektanw...

Die perfekte Lösung zum Hervorheben von Schlüsselwörtern in HTML

Bei der Arbeit an einem Projekt bin ich kürzlich ...

Zusammenfassung der Linux-Benutzergruppen und -Berechtigungen

Benutzergruppen Unter Linux muss jeder Benutzer e...

Front-End-JavaScript versteht Funktions-Currying gründlich

Inhaltsverzeichnis 1. Was ist Curry 2. Verwendung...

Schritte zur Verwendung von ORM zum Hinzufügen von Daten in MySQL

【Vorwort】 Wenn Sie ORM zum Bedienen von Daten in ...

Linux-Befehl „cut“ erklärt

Der Cut-Befehl in Linux und Unix dient dazu, aus ...

CSS erreicht hochadaptiven Vollbildmodus

Beim Schreiben meiner eigenen Demo möchte ich dis...

JavaScript-Entwurfsmuster, Proxy-Muster lernen

Inhaltsverzeichnis Überblick Durchführung Schutz-...

Zusammenfassung der Anwendung von Übergangskomponenten in Vue-Projekten

​Transtion in Vue ist eine Kapselungskomponente f...

JavaScript, um den Effekt des Tab-Leistenwechsels zu erzielen

Registerkartenleiste: Klicken Sie auf verschieden...