Kürzlich habe ich das Passwort für den MySQL-Root-Benutzer meiner Website geändert. Dann dachte ich, was passiert, wenn ich das MySQL-Root-Passwort vergesse?
Gibt es eine einfache Möglichkeit, das MySQL- oder MariaDB-Root-Passwort zurückzusetzen?
Ich habe einige Online-Tutorials durchgesehen, aber keines davon scheint vollständig genug zu sein, um zwischen dem Ändern des Passworts und dem Zurücksetzen des Passworts zu unterscheiden. Ihnen schienen die Details über die MySQL-Tabelle zu fehlen, wo Benutzerpasswörter gespeichert werden und in welchen Spalten.
In diesem Tutorial werden wir die folgenden Themen lernen.
- So ändern Sie das MySQL/MariaDB-Root-Passwort
- So setzen Sie das MySQL/MariaDB-Root-Passwort zurück
Ich werde versuchen, es so vollständig wie möglich zu machen, und hoffentlich werden Sie diese Aufgabe nach dem Lesen leicht und ohne weitere Hilfe bewältigen können.
Was ist der Unterschied zwischen Ändern und Zurücksetzen des Passworts?
Wenn Sie das Root-Passwort kennen, können Sie sich als Root-Benutzer mit der Datenbank verbinden und dann das Passwort ganz einfach ändern. Sie können das Root-Passwort sowie jedes andere Benutzerpasswort ändern.
Wenn Sie das Root-Passwort vergessen haben, können Sie sich als Root-Benutzer nicht mit dem MySQL-Server verbinden. Der Root-Benutzer hat die höchsten Privilegien und Sie können sein Passwort nicht über andere Konten ändern. In diesem Fall müssen wir einige zusätzliche Schritte ausführen, um das MySQL-Root-Passwort zurückzusetzen.
Schritte für MySQL und MariaDB sind gleich?
MariaDB baut auf MySQL auf. Es ist sehr beliebt für Webhosting-Anforderungen. Tatsächlich verwenden JournalDev und alle meine Websites die MariaDB-Datenbank. Jeder Befehl, der für MySQL funktioniert, funktioniert auch für MariaDB.
Die einzige Anpassung in den Befehlen, die Sie möglicherweise vornehmen müssen, ist das Stoppen und Starten des MySQL-Servers. Ich verwende Ubuntu für dieses Tutorial und ich verwende systemctl
um Dienste zu starten/stoppen. Sie können auch /etc/init.d/mysql
verwenden um die gleichen Operationen durchzuführen.
Wenn Sie ein Windows-Betriebssystem verwenden, verwenden Sie bitte mysqld oder mysqladmin von der Eingabeaufforderung aus, um den MySQL-Server zu starten oder zu stoppen. Sie befinden sich im Bin-Ordner der MySQL-Installation.
So ändern Sie das MySQL- oder MariaDB-Root-Passwort
Ich verwende die MariaDB-Datenbank, wir können die Option –version verwenden, um ihre Version herauszufinden.
# mariadb --version mariadb Ver 15.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 #
1. Verbinden Sie sich als Root-Benutzer mit MySQL
# mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
2. Ändern Sie das Passwort und den Wert für authentication_string in der mysql.user-Tabelle
MySQL-Benutzerkennwörter werden in verschlüsselter Form in den Spalten password und authentication_string der Tabelle mysql.user gespeichert. Wir können die Funktion PASSWORD() verwenden, um eine Klartextzeichenfolge in den verschlüsselten Wert umzuwandeln und diese Spalten festzulegen.
MariaDB [(none)]> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost'; +-------------------------------------------+-------------------------------------------+ | password | authentication_string | +-------------------------------------------+-------------------------------------------+ | *E510A8BC6807F8BF4913D893620792C432FCBA5B | *E510A8BC6807F8BF4913D893620792C432FCBA5B | +-------------------------------------------+-------------------------------------------+ 1 row in set (0.00 sec) MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost'; +-------------------------------------------+-------------------------------------------+ | password | authentication_string | +-------------------------------------------+-------------------------------------------+ | *6F168491676C70E51CB8D0F14D6B581D1322A77A | *6F168491676C70E51CB8D0F14D6B581D1322A77A | +-------------------------------------------+-------------------------------------------+ 1 row in set (0.00 sec) MariaDB [mysql]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) MariaDB [mysql]> exit Bye root@localhost:~#
Lassen Sie uns verstehen, was in den obigen Abfragen passiert.
- Zunächst ändern wir die Datenbank auf „mysql“
- Dann setzen wir die Spaltenwerte „authentication_string“ und „password“ für den Benutzer „root“@„localhost“ mit dem neuen Passwort.
- Dann laden wir die Berechtigungstabellen mit dem FLUSH PRIVILEGES-Befehl neu.
- Beenden Sie dann die MySQL-Sitzung. Das Root-Passwort wurde erfolgreich geändert.
HINWEIS :Ich habe versucht, ALTER USER
zu verwenden Befehl zum Ändern des Root-Passworts, aber es hat nicht funktioniert.
MariaDB [mysql]> ALTER USER root@localhost IDENTIFIED BY 'qwerty2022'; ERROR 1064 (42000): 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 'qwerty2022'' at line 1 MariaDB [mysql]>
3. Bestätigen Sie die Anmeldung des Root-Benutzers mit dem neuen Passwort
# mysql -uroot -pqwerty2021 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 11 Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Das ist es. Wir haben das MySQL/MariaDB-Benutzerkennwort erfolgreich geändert.
So setzen Sie das MySQL/MariaDB-Root-Passwort zurück
Wenn Sie das Root-Passwort vergessen haben, müssen wir einen zusätzlichen Schritt ausführen, damit wir uns beim MySQL-Terminal anmelden können, ohne das Passwort anzugeben.
1. Beenden Sie den MySQL-Server
# systemctl stop mysql
Sie können auch systemctl stop mariadb
ausführen , ist der Effekt derselbe.
2. Starten des MySQL-Servers ohne Berechtigungsprüfungseinstellung
Die Idee ist, den MySQL-Server zu starten, ohne die Grant-Tabelleninformationen zu laden, sodass wir uns als Root-Benutzer anmelden können, ohne ein Passwort anzugeben.
Es ist ein Sicherheitsrisiko, den MySQL-Server auf diese Weise auszuführen, daher muss es kurz ausgeführt und sofort nach dem Zurücksetzen des Root-Passworts heruntergefahren werden.
Wir können den MySQL-Server im abgesicherten Modus starten und –skip-grant-tables übergeben Option zum Überspringen des Ladens von Grant-Tabellen, die die Einstellungen der Benutzerrechte speichern.
# sudo mysqld_safe --skip-grant-tables --skip-networking & [1] 11734 root@localhost:~# 200427 20:05:40 mysqld_safe Logging to syslog. 200427 20:05:40 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql #
Es ist wichtig, den Befehl auszuführen, der mit &endet, damit er im Hintergrund ausgeführt wird. Ich passiere auch –skip-networking Option zum Überspringen von Netzwerken, die andere Clients daran hindern, sich mit dem MySQL-Server zu verbinden.
3. Verbinden Sie sich als root mit MySQL Server, ohne das Passwort weiterzugeben
# mysql -u root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Beachten Sie, dass wir kein Root-Passwort bereitstellen, aber dennoch eine Verbindung zum MySQL-Server herstellen können.
4. Setzen Sie das Root-Passwort in der mysql.user-Tabelle zurück
MariaDB [(none)]> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [mysql]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) MariaDB [mysql]> exit Bye #
5. Beenden und starten Sie den MySQL-Server
Zunächst beenden wir den laufenden MySQL-Server. Die PID ist in /var/run/mysqld/mysqld.pid
vorhanden Datei.
# cat /var/run/mysqld/mysqld.pid 11891 # sudo kill 11891 #
Starten Sie nun den MySQL-Server im normalen Modus.
# systemctl start mysql
6. Bestätigen Sie dies, indem Sie sich als Root-Benutzer mit neuem Passwort anmelden
# mysql -uroot -pqwerty2022 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5 Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Wenn Sie versuchen, sich als Root ohne Passwort anzumelden, wird der Fehler „Zugriff verweigert“ ausgegeben.
# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # mysql -uroot ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) #
Schlussfolgerung
Der MySQL-Root-Benutzer ist genau wie jeder andere Benutzer. Das Ändern oder Zurücksetzen des Passworts ist jedoch etwas schwierig, da es sich um den Superuser handelt und wir das Root-Passwort nicht von einem anderen Benutzer-Login aus ändern können.