Hast du das Root-Passwort deines MySQL-Servers vergessen? Kein Grund zur Sorge. Hier erfährst du, wie du es schnell und einfach zurücksetzen kannst.
Das Zurücksetzen des Root-Passworts ist ein einfacher Prozess, der in drei einfachen Schritten durchgeführt werden kann. Egal, ob du ein Anfänger oder ein erfahrener MySQL-Benutzer bist, ich zeige dir, wie du die Kontrolle über deinen Datenbankserver wiedererlangen kannst.
In diesem Leitfaden werden zwei verschiedene Techniken zum Zurücksetzen des MySQL Root User Passworts vorgestellt. Für welche der beiden Methoden du dich auch entscheidest, sie wird dir das gewünschte Ergebnis liefern. Außerdem gilt die Anleitung ausschließlich für die Datenbank MariaDB, eine beliebte MySQL-Alternative, und bietet in einigen Fällen zusätzliche Funktionen, die in MySQL nicht verfügbar sind.
MySQL root Passwort zurücksetzen: Der schnellste Weg
Um die folgenden Schritte auszuführen, brauchst du ein lokales Benutzerkonto auf dem Server, auf dem MySQL läuft, das über sudo-Berechtigungen zum Ausführen privilegierter Befehle verfügt.
Schritt 1: Anhalten und Starten des MySQL-Servers ohne Passwort
Stoppe den MySQL-Dienst.
sudo systemctl stop mysqld
Starte dann, wie unten gezeigt, eine temporäre MySQL-Serverinstanz.
sudo -u mysql mysqld --skip-grant-tables &
Lass mich das erklären. Wenn der Server mit der Option --skip-grant-tables gestartet wird, liest er die Grant-Tabellen nicht und wendet keine Zugriffskontrolle an. Mit anderen Worten: Die Benutzer können ohne Passwort auf den Server zugreifen.
Du kannst dich jetzt als Root-Benutzer am MySQL-Server anmelden, ohne dass ein Passwort erforderlich ist.
mysql -u root
Schritt 2: Zurücksetzen eines MySQL-Root-Passworts
Setze zunächst die aktuellen Berechtigungen zurück.
FLUSH PRIVILEGES;
Setze dann das Root-Passwort von MySQL mit der folgenden Abfrage zurück. Ersetze zuerst natürlich "MyNewPassword" durch das gewünschte Passwort.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword!1';
Zum Schluss lädst du die Berechtigungen noch einmal neu und beendest das Programm.
FLUSH PRIVILEGES;
quit
Schritt 3: Neustart und Verbindung mit dem MySQL-Server
Nachdem wir nun das Passwort geändert haben, musst du den vorübergehend laufenden MySQL-Server stoppen, indem du seine Prozessnummer herausfindest und ihn beendest. Das kannst du ganz einfach mit dem folgenden Befehl erreichen:
ps auxw | grep '\-\-skip-grant-tables' | tail -n 1 | awk '{ print $2 }' | sudo xargs kill
Starte dann den MySQL-Server neu und melde dich mit dem neuen Passwort an.
sudo systemctl start mysqld
mysql -u root -p
Herzlichen Glückwunsch! Der MySQL-Server ist jetzt wieder unter deiner Kontrolle.
Das Root-Passwort von MySQL durch eine Initialisierungsdatei zurücksetzen
Um die folgenden Schritte auszuführen, brauchst du ein lokales Benutzerkonto auf dem Server, auf dem MySQL läuft, das über sudo-Berechtigungen verfügt, um privilegierte Befehle auszuführen.
Schritt 1: Wechsle zum Systembenutzer mysql und halte den MySQL-Server an
Um die folgenden Schritte erfolgreich durchzuführen, musst du zu dem Systembenutzerkonto wechseln, unter dem dein MySQL-Server läuft. Das ist normalerweise das Systemkonto mit dem Benutzernamen mysql. Um dorthin zu wechseln, führe Folgendes aus:
sudo -u mysql /bin/bash
Du kannst den Befehl whoami verwenden, um sicherzustellen, dass du mit dem richtigen Benutzer arbeitest.
Beende dann den MySQL-Server, indem du dem kill-Befehl den vollständigen Pfad zur PID-Datei mit der Prozessnummer übergibst, mit der er gestartet ist. Wenn du dir nicht sicher bist, wo sich diese Datei befindet, kannst du sie schnell finden, indem du den folgenden Befehl ausführst:
mysqld --print-defaults | tr " " "\n" | grep pid | tail -n 1
Zum Schluss beendest du den MySQL-Server.
kill `cat /run/mysqld/mysqld.pid`
Schritt 2: Erstelle eine MySQL-Passwort-Reset-Datei
Erstelle mit deinem bevorzugten Texteditor im Verzeichnis /tmp eine Textdatei mit dem Namen "mysql-init.txt", die eine einzige Zeile mit der Abfrage für die Passwortzuweisung enthält.
vi /tmp/mysql-init.txt
Füge die folgende Zeile ein und achte darauf, das Passwort in das zu ändern, das du verwenden möchtest.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword!1';
Speichere die Datei und beende sie.
Schritt 3: Starten des MySQL-Servers
Starte den MySQL-Server wie unten gezeigt und setze dabei die Option --init-file auf den vollständigen Pfad zu der Datei, die du gerade erstellt hast.
mysqld --init-file=/tmp/mysql-init.txt &
Das war's schon. Das Passwort des MySQL-Root-Benutzers wurde geändert und du kannst dich jetzt als root mit dem Passwort anmelden, das du in der Datei oben angegeben hast.
mysql -u root -p
bash-4.4$ kill `cat /run/mysqld/mysqld.pid`
exit
sudo systemctl start mysqld
Jetzt kannst du die Datei "/tmp/mysql-init.txt" sicher löschen. Du brauchst sie nicht mehr.
Um den MySQL jedoch wieder über SystemD steuern zu können muss der MySQL-Server über SystemD auch wieder gestartet werden.
Fazit
Wie du siehst, ist das Zurücksetzen des MySQL-Root-Passworts ein relativ einfacher Prozess, der in drei Schritten durchgeführt werden kann. Es ist jedoch wichtig zu beachten, dass das Zurücksetzen des Root-Passworts nur als letzter Ausweg erfolgen sollte, da es deine Datenbank potenziellen Sicherheitsrisiken aussetzen kann.
Daher ist es immer eine gute Idee, dein Passwort sorgfältig zu verwalten und es sicher aufzubewahren, damit es in Zukunft nicht zurückgesetzt werden muss. Weitere Informationen findest du in der offiziellen Dokumentation.