So setzen Sie Ihr MySQL- oder MariaDB-Root-Passwort zurück

Einführung

Das Vergessen von Passwörtern geschieht den Besten von uns. Wenn Sie das Root-Passwort für Ihre MySQL- oder MariaDB-Datenbank vergessen oder verlieren, können Sie trotzdem Zugriff erhalten und das Passwort zurücksetzen, wenn Sie Zugriff auf den Server und einsudo-fähiges Benutzerkonto haben.

In diesem Tutorial erfahren Sie, wie Sie das Root-Passwort für ältere und neuere Versionen von MySQL und MariaDB zurücksetzen.

Voraussetzungen

Um Ihr root-MySQL / MariaDB-Passwort wiederherzustellen, benötigen Sie:

  • Zugriff auf den Linux-Server, auf dem MySQL oder MariaDB mit einem sudo-Benutzer ausgeführt wird.

[[Schritt-1 - Identifizieren der Datenbankversion]] == Schritt 1 - Identifizieren der Datenbankversion

Die meisten modernen Linux-Distributionen werden mit MySQL oder MariaDB ausgeliefert, einem beliebten Drop-In-Ersatz, der vollständig mit MySQL kompatibel ist. Abhängig von der verwendeten Datenbank und ihrer Version müssen Sie unterschiedliche Befehle verwenden, um das Root-Passwort wiederherzustellen.

Sie können Ihre Version mit dem folgenden Befehl überprüfen:

mysql --version

In MySQL sehen Sie eine Ausgabe wie die folgende:

MySQL outputmysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

Oder für MariaDB so ausgeben:

MariaDB outputmysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

Notieren Sie sich, welche Datenbank und welche Version Sie verwenden, da Sie diese 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]] == Schritt 2 - Stoppen des Datenbankservers

Um das root-Passwort zu ändern, müssen Sie den Datenbankserver vorher herunterfahren.

Sie können das für MySQL tun mit:

sudo systemctl stop mysql

Und für MariaDB mit:

sudo systemctl stop mariadb

Nach dem Stoppen des Datenbankservers greifen Sie manuell darauf zu, um das Root-Passwort zurückzusetzen.

[[Schritt 3 - Neustart des Datenbankservers ohne Berechtigungsprüfung]] == Schritt 3 - Neustart des Datenbankservers ohne Berechtigungsprüfung

Wenn Sie MySQL und MariaDB ausführen, ohne Informationen zu Benutzerberechtigungen zu laden, können Sie mit Root-Berechtigungen 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 Datenbankgrant tables lädt, in denen Benutzerberechtigungsinformationen gespeichert sind. Da dies ein 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:

sudo mysqld_safe --skip-grant-tables --skip-networking &

Das kaufmännische Und am Ende dieses Befehls bewirkt, dass dieser Prozess im Hintergrund ausgeführt wird, sodass Sie Ihr Terminal weiterhin verwenden können.

Jetzt können Sie sich als Root-Benutzer mit der Datenbank verbinden, der nicht nach einem Passwort fragen sollte.

mysql -u root

Stattdessen wird sofort eine Eingabeaufforderung für die Datenbankshell angezeigt.

MySQL-Eingabeaufforderung

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

MariaDB-Eingabeaufforderung

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Jetzt, da Sie Root-Zugriff haben, können Sie das Root-Passwort ändern.

[[Schritt-4 -—- Ändern des Root-Passworts]] == Schritt 4 - Ändern des Root-Passworts

Eine einfache Möglichkeit, das Root-Passwort für moderne Versionen von MySQL zu ändern, ist die Verwendung des BefehlsALTER USER. Dieser Befehl funktioniert derzeit jedoch nicht, da die Grant-Tabellen nicht geladen sind.

Lassen Sie uns den Datenbankserver anweisen, die Grant-Tabellen neu zu laden, indem Sie den BefehlFLUSH PRIVILEGES ausgeben.

FLUSH PRIVILEGES;

Jetzt können wir das root-Passwort tatsächlich ändern.

Verwenden Sie fürMySQL 5.7.6 and newer sowieMariaDB 10.1.20 and newer den folgenden Befehl.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Verwenden Sie fürMySQL 5.7.5 and older sowieMariaDB 10.1.20 und älter:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

Stellen Sie sicher, dass Sienew_password durch das neue Passwort Ihrer Wahl ersetzen.

[.Hinweis]##

Note: Wenn der BefehlALTER USER nicht funktioniert, weist er normalerweise auf ein größeres Problem hin. Sie können jedochUPDATE ... SET versuchen, stattdessen das Root-Passwort zurückzusetzen.

UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

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.

OutputQuery OK, 0 rows affected (0.00 sec)

Das Kennwort wurde geändert, sodass Sie jetzt die manuelle Instanz des Datenbankservers stoppen und wie zuvor neu starten können.

[[Schritt-5 - - Neustart des Datenbankservers normal]] == Schritt 5 - Starten Sie den Datenbankserver normal neu

Beenden Sie zunächst die in Schritt 3 manuell gestartete Instanz des Datenbankservers. Dieser Befehl sucht nach der PID oder Prozess-ID des MySQL- oder MariaDB-Prozesses und sendetSIGTERM, um ihn anzuweisen, nach dem Ausführen von Bereinigungsvorgängen reibungslos zu beenden. Sie können mehr inthis Linux process management tutorial erfahren.

Verwenden Sie für MySQL:

sudo kill `cat /var/run/mysqld/mysqld.pid`

Verwenden Sie für MariaDB:

sudo kill `/var/run/mariadb/mariadb.pid`

Starten Sie dann den Dienst mitsystemctl neu.

Verwenden Sie für MySQL:

sudo systemctl start mysql

Verwenden Sie für MariaDB:

sudo systemctl start mariadb

Jetzt können Sie bestätigen, dass das neue Passwort korrekt angewendet wurde, indem Sie Folgendes ausführen:

mysql -u root -p

Der Befehl sollte jetzt zur Eingabe des neu zugewiesenen Kennworts auffordern. Geben Sie es ein und Sie sollten wie erwartet Zugriff auf die Datenbank-Eingabeaufforderung erhalten.

Fazit

Sie haben nun Administratorzugriff auf den MySQL- oder MariaDB-Server, der wiederhergestellt wurde. 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.

Related