Haben Sie Ihr MySQL-Root-Benutzerkennwort vergessen? Keine Bange! Diese Anleitung führt Sie durch die Schritte zum Zurücksetzen des MySQL-Root-Benutzerkennworts in Linux-Betriebssystemen. Die unten angegebenen Schritte sollten auch zum Zurücksetzen des MariaDB-Root-Passworts funktionieren.
Wir haben bereits eine Anleitung zum Zurücksetzen des (administrativen) Root-Benutzerpassworts in MySQL veröffentlicht ältere Versionen, z. B. MySQL 5.7. Diese Methode funktionierte jedoch nicht mit der neuen MySQL 8-Version. Wenn Sie das Root-Passwort in MySQL 8 zurücksetzen möchten, befolgen Sie eine der beiden unten angegebenen Problemumgehungen.
Passwort des MySQL-Root-Benutzers unter Linux zurücksetzen
Wie ich bereits erwähnt habe, können wir das MySQL-Root-Passwort auf zwei Arten zurücksetzen.
- Der generische Weg,
- Verwendung von
init_file
Systemvariable.
1. Die generische Methode zum Zurücksetzen des MySQL-Root-Passworts
Diese Methode funktioniert unabhängig vom verwendeten Betriebssystem. Ich warne Sie, dass es weniger sicher ist weil wir den MySQL-Server mit den --skip-grant-tables
starten werden Möglichkeit. Dadurch erhält jeder mit Zugriff auf den Server unbeschränkten Zugriff auf alle Datenbanken .
Stoppen Sie zuerst den MySQL-Dienst mit dem Befehl:
$ sudo systemctl stop mysql
Sie können überprüfen, ob MySQL tatsächlich gestoppt ist mit dem Befehl:
$ sudo systemctl status mysql
Beispielausgabe:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2021-05-29 11:53:08 UTC; 8s ago Process: 560 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Process: 666 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS) Main PID: 666 (code=exited, status=0/SUCCESS) Status: "Server shutdown complete" May 29 10:08:33 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server… May 29 10:08:37 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server. May 29 11:53:07 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server… May 29 11:53:08 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded. May 29 11:53:08 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.
Nun, der MySQL-Dienst läuft nicht.
Starten Sie nun den MySQL-Server ohne Berechtigungsprüfung neu, indem Sie den folgenden Befehl ausführen:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Hier --skip-grant-tables
Option ermöglicht es Ihnen, sich ohne Passwort und mit allen Privilegien mit dem MySQL-Datenbankserver zu verbinden. Der --skip-networking
Option wird verwendet, um zu verhindern, dass andere Clients eine Verbindung zum Datenbankserver herstellen. Und das kaufmännische Und (&
) Symbol wird verwendet, um den Befehl im Hintergrund auszuführen, sodass Sie die anderen in den nachfolgenden Schritten angegebenen Befehle eingeben können. Bitte beachten Sie, dass der obige Befehl gefährlich ist und Ihr Datenbankserver unsicher und anfällig für Sicherheitsbedrohungen wird. Sie sollten diesen Befehl nur für kurze Zeit ausführen um das Passwort zurückzusetzen.
Möglicherweise wird der folgende Fehler angezeigt:
2021-05-29T12:00:19.991826Z mysqld_safe Logging to '/var/log/mysql/error.log'. 2021-05-29T12:00:19.996942Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
Wenn Sie diesen Fehler sehen, erstellen Sie das fehlende Verzeichnis (z. B. /var/run/mysqld
) und legen Sie die entsprechenden Berechtigungen wie unten angegeben fest.
$ sudo mkdir -p /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld
Versuchen Sie nun erneut, den MySQL-Server ohne Passwort und mit Root-Rechten zu starten:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Als nächstes verbinden Sie sich mit dem mysql-Server mit dem Befehl:
$ mysql
Sie landen im mysql-Shell-Prompt.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Da wir uns angemeldet haben, ohne Grant-Tabellen zu laden (weil wir --skip-grant-tables
verwendet haben). Option), können wir ALTER USER
nicht verwenden Befehl zum Zurücksetzen des Passworts. Lassen Sie uns also Berechtigungstabellen mit dem Befehl laden:
mysql> FLUSH PRIVILEGES;
Führen Sie nun den folgenden Befehl aus, um das MySQL-Root-Benutzerpasswort zu aktualisieren:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';
Ersetzen Sie im obigen Befehl [email protected]#@!
mit eigenem Passwort. Bitte beachten Sie, dass Sie Validate Password
aktiviert haben Komponente müssen Sie ein sicheres Passwort verwenden.
Verlassen Sie schließlich die mysql-Eingabeaufforderung:
mysql> exit
Fahren Sie schließlich den laufenden Datenbankserver herunter, den Sie zuvor mit --skip-grant-tables
gestartet haben Möglichkeit. Führen Sie dazu Folgendes aus:
$ sudo mysqladmin -u root -p shutdown
Sie werden aufgefordert, Ihren sudo
einzugeben Passwort gefolgt von MySQL root
Benutzerkennwort, das Sie im vorherigen Schritt festgelegt haben.
[sudo] password for ostechnix: Enter password: 2021-05-29T12:09:38.425737Z mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu2004.localdomain.pid ended [1]+ Done sudo mysqld_safe --skip-grant-tables --skip-networking
Wenn der obige Befehl nicht funktioniert, suchen Sie die .pid file
die die Prozess-ID des Servers enthält. Die PID-Datei ist normalerweise unter /var/lib/mysql/
verfügbar oder /var/run/mysqld/
oder /usr/local/mysql/data/
Verzeichnis abhängig von Ihrer Distribution, Ihrem Hostnamen und Ihrer Konfiguration. Im Allgemeinen hat der Dateiname die Erweiterung .pid und beginnt entweder mit mysqld
oder den Hostnamen Ihres Systems.
In meinem Fall ist es "/var/lib/mysql/ubuntuserver.pid"
.
Also habe ich die Instanz des Datenbankservers mit dem Befehl gestoppt:
$ sudo kill `/var/lib/mysql/ubuntuserver.pid`
Bitte verwenden Sie das Back-Tick um den Dateipfad zu nennen.
Wir können die MySQL-PID auch mit ps
finden und grep
Befehle wie unten:
$ ps ax | grep mysql
Beispielausgabe:
1930 pts/0 S 0:00 sudo mysqld_safe --skip-grant-tables --skip-networking 1931 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking 2091 pts/0 Sl 0:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/var/log/mysql/error.log --pid-file=ubuntuserver.pid
Beenden Sie es manuell wie unten:
$ sudo kill <PID>
Oder beenden Sie alle MySQL-Dienste:
$ sudo killall mysql
Starten Sie nun den MySQL-Dienst normal mit dem Befehl:
$ sudo systemctl start mysql
Melden Sie sich jetzt mit dem neuen Passwort beim MySQL-Server an:
$ mysql -u root -p
Beispielausgabe:
2. MySQL-Root-Passwort mit Passwortdatei zurücksetzen
Die andere Möglichkeit zum Zurücksetzen des mysql-Root-Passworts ist die Verwendung von init_file
Systemvariable.
Stoppen Sie den MySQL-Dienst:
$ sudo systemctl stop mysql
Erstellen Sie eine Textdatei, zum Beispiel ostechnix.txt
:
$ vi ostechnix.txt
Fügen Sie darin die folgende Zeile hinzu:
ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';
Ersetzen Sie [email protected]#@!
mit Ihrem eigenen Passwort in der oberen Zeile. Wenn Sie Validate Password
aktiviert haben plugin, sollten Sie ein starkes Passwort angeben. Speichern und schließen Sie die Datei.
Starten Sie nun den MySQL-Server mit der init_file
Systemvariable, die auf die ostechnix.txt
zeigt Datei:
$ sudo mysqld --init-file=/home/sk/ostechnix.txt &
Dieser Befehl führt den Inhalt von ostechnix.txt
aus Datei und aktualisieren Sie [email protected]
Kontopasswort mit neuem Passwort, das in ostechnix.txt
erwähnt wird Datei und starten Sie schließlich den mysql-Server.
Stoppen Sie jetzt den MySQL-Server und starten Sie ihn normal neu:
$ sudo systemctl stop mysql
$ sudo systemctl start mysql
Löschen Sie schließlich die Passwortdatei, z. B. ostechnix.txt
.
$ rm /home/sk/ostechnix.txt
Jetzt können Sie sich mit dem neuen Passwort beim MySQL-Server anmelden, indem Sie den Befehl verwenden:
$ mysql -u root -p
Wir haben auch eine etwas andere Methode zum Zurücksetzen des MySQL-Root-Passworts veröffentlicht. Einzelheiten finden Sie in der folgenden Anleitung:
>> How To Reset Root Password In MySQL 8 On Ubuntu Linux
Schlussfolgerung
In diesem Handbuch haben wir zwei verschiedene Möglichkeiten kennengelernt, um das vergessene MySQL-Root-Benutzerkennwort in Linux-Betriebssystemen zurückzusetzen. Wenn Sie das Benutzerkennwort Ihres Datenbankadministratorkontos verloren haben, können Sie es in wenigen Minuten einfach zurücksetzen.