Detailliertes Tutorial zum Ändern des Root-Passworts, wenn man es in MySQL 5.7 vergessen hat

Detailliertes Tutorial zum Ändern des Root-Passworts, wenn man es in MySQL 5.7 vergessen hat

Vorwort

Die Anwendungs- und Lernumgebung von MySQL bestand lange Zeit aus MySQL 5.6 und früheren Versionen, und den Änderungen und neuen Funktionen der neuen Version MySQL 5.7 wurde keine Beachtung geschenkt. Als ich heute jemandem half, sein Root-Passwort zu vergessen, stellte ich fest, dass die vorherige Methode nicht funktionierte.

Der konkrete Sachverhalt stellt sich wie folgt dar:

Der Fallkontext stellt sich wie folgt dar:

Betriebssystem: Red Hat Enterprise Linux Server Version 6.6 (Santiago)

Datenbankversion: 5.7.18 MySQL Community Server (GPL)

Passwort vergessen? Wenn Sie ein falsches Passwort eingeben, erhalten Sie folgende Fehlermeldung:

[root@mytestlnx02 ~]# mysql -u root -p
Passwort eingeben: 
FEHLER 1045 (28000): Zugriff für Benutzer „root“@„localhost“ verweigert (mit Passwort: JA)
[root@mytestlnx02 ~]#

Überprüfen Sie, ob der MySQL-Dienst gestartet ist. Wenn dies der Fall ist, beenden Sie den MySQL-Dienst.

[root@mytestlnx02 ~]# ps -ef | grep -i mysql
root 22972 1 0 14:18 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 23166 22972 0 14:18 Punkte/0 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 23237 21825 0 14:22 Punkte/0 00:00:00 grep -i mysql
[root@mytestlnx02 ~]# Dienst mysqld stoppen
Stoppen von mysqld: [ OK ]
[root@mytestlnx02 ~]#

Suchen Sie die MySQL-Konfigurationsdatei my.cnf und fügen Sie die folgenden Informationen zu /etc/my.cnf hinzu (einige Versionen sind /etc/mysql/my.cnf):

[mysqld] 

Skip-Grant-Tabellen

Dann habe ich MySQL gestartet, MySQL eingegeben und das Root-Passwort geändert. Während des Vorgangs ist mir ERROR 1054 (42S22): Unknown column 'password' in 'field list' . Ich habe die Tabellenstruktur der Benutzertabelle überprüft und festgestellt, dass die Benutzertabelle unter MySQL 5.7 kein Passwortfeld mehr hatte. Das verschlüsselte Benutzerkennwort wird im Feld „authentifizierungsstring“ gespeichert.

Der konkrete Betriebsablauf ist wie folgt:

[root@mytestlnx02 ~]# Dienst mysqld starten
mysqld wird gestartet: [ OK ]
[root@mytestlnx02 ~]# mysql -u root 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 4
Serverversion: 5.7.18 MySQL Community Server (GPL)
 
Copyright (c) 2000, 2017, Oracle und/oder Tochtergesellschaften. Alle Rechte vorbehalten.
 
Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.
 
Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
 
mysql> mysql verwenden;
Einlesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen
Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten
 
Datenbank geändert
mysql> Benutzer aktualisieren, Passwort festlegen=PASSWORT('Kd8k&dfdl023')
 -> wobei Benutzer='root';
FEHLER 1054 (42S22): Unbekannte Spalte „Passwort“ in „Feldliste“
mysql> mysql.user aktualisieren, Authentifizierungszeichenfolge=Passwort festlegen('Kd8k&dfdl023'), wobei Benutzer='root';
Abfrage OK, 1 Zeile betroffen, 1 Warnung (0,00 Sek.)
Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 1
 
mysql> Berechtigungen leeren;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
 
mysql> beenden 

Kommentieren oder löschen Sie in der Datei my.cnf die Zeile „skip-grant-tables“, die Sie gerade hinzugefügt haben. Anschließend müssen Sie nach dem Neustart des MySQL-Dienstes den Befehl set password=password('newpassword'); ausführen, und das Problem ist gelöst.

[root@mytestlnx02 ~]# Dienst mysqld starten
mysqld wird gestartet: [ OK ]
[root@mytestlnx02 ~]# mysql -u root -p
Passwort eingeben: 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 4
Serverversion: 5.7.18
 
Copyright (c) 2000, 2017, Oracle und/oder Tochtergesellschaften. Alle Rechte vorbehalten.
 
Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.
 
Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
 
mysql> mysql verwenden;
FEHLER 1820 (HY000): Sie müssen Ihr Kennwort mit der Anweisung ALTER USER zurücksetzen, bevor Sie diese Anweisung ausführen.
mysql> Passwort festlegen=Passwort('Kd8k&dfdl023');
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,00 Sek.)

Nachdem ich einige relevante Informationen überprüft hatte, stellte ich fest, dass MySQL 5.7 in Bezug auf die Sicherheit einige neue Funktionen bietet.

1. Das Plugin-Feld der Benutzertabelle mysql.user darf nicht leer sein. Der Standardwert ist mysql_native_password statt mysql_old_password. Das alte Passwortformat wird nicht mehr unterstützt.

2. Fügen Sie einen Mechanismus zum Ablaufen von Passwörtern hinzu. Nach Ablauf müssen Sie das Passwort ändern, andernfalls wird es möglicherweise deaktiviert oder wechselt in den Sandbox-Modus. Ob das Ablaufen von Passwörtern aktiviert wird, wird durch den Parameter default_password_lifetime gesteuert.

mysql> Variablen wie „default_password_lifetime“ anzeigen;
+-----------------------------------------+----------+
| Variablenname | Wert |
+-----------------------------------------+----------+
| Lebensdauer des Standardpassworts | 0 |
+-----------------------------------------+----------+
1 Zeile im Satz (0,00 Sek.)
 
MySQL>

3: Einstellungen für Kennwortsicherheitsstufe und Kennwortkomplexität hinzugefügt. Die Parameter sind wie folgt:

mysql> Variablen wie „validate_password%“ anzeigen;
+--------------------------------------+--------+
| Variablenname | Wert |
+--------------------------------------+--------+
| Passwort validieren_Benutzername prüfen | AUS |
| Passwortwörterbuchdatei validieren | |
| Passwortlänge validieren | 8 |
| Anzahl der Passworteinträge in gemischter Groß- und Kleinschreibung validieren | 1 |
| Anzahl_der_Passwort_validierungsnummern | 1 |
| Passwortrichtlinie validieren | MITTEL |
| Anzahl der Sonderzeichen für Passwortvalidierung | 1 |
+--------------------------------------+--------+
7 Zeilen im Satz (0,00 Sek.)

4. Wenn Sie mysql_install_db zum Initialisieren verwenden, wird standardmäßig automatisch ein zufälliges Kennwort generiert und in /var/log/mysqld.log abgelegt. Es werden keine anderen Konten außer root@localhost und mysql.sys@localhost erstellt und es wird keine Testbibliothek erstellt.

[root@mytestlnx02 mysql]# yum localinstall mysql-community-{server,client,common,libs}-* 
[root@mytestlnx02 mysql]# rpm -qa | grep -i mysql
mysql-community-client-5.7.18-1.el6.i686
mysql-community-libs-5.7.18-1.el6.i686
perl-DBD-MySQL-4.013-3.el6.x86_64
mysql-community-server-5.7.18-1.el6.i686
mysql-community-common-5.7.18-1.el6.i686
mysql-community-libs-compat-5.7.18-1.el6.i686
[root@mytestlnx02 mysql]# Dienst mysqld start
 
MySQL-Datenbank initialisieren: [ OK ]
Plugin zur Passwortvalidierung wird installiert: [ OK ]
mysqld wird gestartet: [ OK ]
[root@mytestlnx02 mysql]# 
[root@mytestlnx02 mysql]# grep 'temporäres Passwort' /var/log/mysqld.log
2017-05-05T06:10:57.802143Z 1 [Hinweis] Ein temporäres Passwort wird für root@localhost generiert: w99s(m-q_ML:
 
mysql> Benutzer, Host vom Benutzer auswählen;
+--------------+--------------+
| Benutzer | Gastgeber |
+--------------+--------------+
| mysql.sys | lokaler Host |
| Stammverzeichnis | lokaler Host |
+--------------+--------------+
2 Zeilen im Satz (0,00 Sek.)

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Lösung zum Vergessen des Root-Passworts von MySQL5.7 unter Windows 8.1
  • So ändern Sie das Root-Passwort von Mysql5.7.10 auf dem MAC
  • Was tun, wenn Sie das Root-Passwort von Mysql5.7 vergessen (einfache und effektive Methode)
  • Lösung zum Vergessen des Root-Passworts von MySQL5.7 auf dem Mac
  • MySQL 5.7-Installationsprozess und Methode zum Zurücksetzen des Root-Passworts (Shell-Skript)
  • Detaillierte Methode zum Vergessen des Root-Passworts oder zum Zurücksetzen des Passworts in Mysql 5.7
  • Problem beim Abrufen des Root-Passworts in MySQL 5.7 unter Linux (getestet und verfügbar)

<<:  Detailliertes grafisches Tutorial zur stillen Installation von Oracle 12.2 auf CentOS unter VMware

>>:  Vollständige Schritte zur Verwendung von Echarts und Unterverpackungen im WeChat Mini-Programm

Artikel empfehlen

So verwenden Sie die HTML 5 Drag & Drop-API in Vue

Die Drag & Drop-API fügt ziehbare Elemente zu...

Implementierungsmethoden gängiger CSS3-Animationen

1. Was ist CSS Animations ist ein vorgeschlagenes...

So verstecken Sie RAR-Dateien in Bildern

Sie können dieses Logo lokal als .rar-Datei speic...

Was ist SSH? Wie benutzt man? Was sind die Missverständnisse?

Inhaltsverzeichnis Vorwort Was ist SSH? Wofür wir...

Auszeichnungssprache - vereinfachte Tags

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

Eine kurze Analyse von Linux resolv.conf

1. Einleitung resolv.conf ist die Konfigurationsd...

Docker verwendet Nextcloud, um eine private Baidu-Cloud-Festplatte zu erstellen

Plötzlich musste ich einen privaten Dienst für di...

Installieren Sie die MySQL5.5-Datenbank in einer CentOS7-Umgebung

Inhaltsverzeichnis 1. Prüfen Sie, ob MySQL auf de...

Konvertieren von XHTML-CSS-Seiten in Druckerseiten

<br />In der Vergangenheit musste zum Erstel...

Tutorial zur HTML-Tabellenauszeichnung (48): CSS-modifizierte Tabelle

<br />Sehen wir uns nun an, wie Sie die CSS-...

Verwendung des offiziellen MySQL-Exporttools mysqlpump

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...

Beispiele für die Verwendung von „Provide“ und „Inject“ in Vue2.0/3.0

Inhaltsverzeichnis 1. Was ist der Nutzen von Prov...