Wie ändere ich das MySQL-Root-Passwort, wenn ich es vergessen habe?
- Vorbereitung und MySQL-Server stoppen
- MySQL im sicheren Modus ohne Passwort starten
- Mit MySQL verbinden ohne Passwort
- Root-Passwort ändern
- MySQL-Server neu starten
- Testen des neuen Root-Passworts
- Wichtige Hinweise
Vorbereitung und MySQL-Server stoppen
Wenn Sie das MySQL-Root-Passwort vergessen haben, müssen Sie den MySQL-Server zunächst stoppen, um ihn im Safe-Mode oder mit speziellen Optionen neu zu starten. Das Stoppen erfolgt je nach Betriebssystem unterschiedlich. Unter Linux-Systemen mit systemd verwenden Sie beispielsweise den Befehl sudo systemctl stop mysql oder sudo systemctl stop mysqld. Alternativ kann man auch sudo service mysql stop versuchen.
MySQL im sicheren Modus ohne Passwort starten
Nach dem Stoppen starten Sie den MySQL-Server mit der Option, die Authentifizierung temporär zu umgehen. Dies erreichen Sie, indem Sie den Server mit der Option --skip-grant-tables und häufig auch --skip-networking starten. Dies verhindert, dass Netzwerkverbindungen erlaubt sind, während Sie Änderungen durchführen.
Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:
sudo mysqld_safe --skip-grant-tables --skip-networking &Warten Sie einige Sekunden, bis der Server vollständig im Safe-Mode läuft.
Mit MySQL verbinden ohne Passwort
Jetzt können Sie sich mit dem MySQL-Client ohne Angabe eines Passworts verbinden, da die Rechteüberprüfung in diesem Modus deaktiviert ist. Benutzen Sie dafür:
mysql -u rootSie erhalten nun Zugriff auf die MySQL-Konsole.
Root-Passwort ändern
In der MySQL-Konsole ändern Sie nun das Passwort. Je nach MySQL-Version gibt es zwei gängige Möglichkeiten. Für neuere Versionen (MySQL 5.7 und höher) empfiehlt sich die Verwendung von ALTER USER. Für ältere Versionen wird SET PASSWORD genutzt.
Beispiel für MySQL 5.7+: Ersetzen Sie NeuesPasswort durch Ihr neues sicheres Passwort.
ALTER USER root@localhost IDENTIFIED BY NeuesPasswort;Sollte dieser Befehl einen Fehler erzeugen, verwenden Sie alternativ:
SET PASSWORD FOR root@localhost = PASSWORD(NeuesPasswort);Danach schreiben Sie folgenden Befehl, um die Berechtigungen neu einzulesen und zu übernehmen:
FLUSH PRIVILEGES;MySQL-Server neu starten
Jetzt verlassen Sie die MySQL-Konsole mit exit; und stoppen den gerade mit --skip-grant-tables gestarteten Server. Dazu können Sie ihn im Terminal mit sudo kill und der PID beenden oder den Rechner neu starten.
Danach starten Sie MySQL wieder in normalem Modus mit:
sudo systemctl start mysqlNun ist das Root-Passwort auf das Neue gesetzt und der Zugriff erfolgt wieder mit Passwortabfrage.
Testen des neuen Root-Passworts
Prüfen Sie abschließend, ob das neue Passwort funktioniert, indem Sie versuchen, sich wie gewohnt anzumelden:
mysql -u root -pNach der Eingabe des neuen Passworts sollten Sie Zugriff erhalten.
Wichtige Hinweise
Das Starten von MySQL mit --skip-grant-tables bedeutet, dass keine Authentifizierung erfolgt, weshalb dieser Zustand nur kurzzeitig und auf sicheren Rechnern durchgeführt werden sollte – idealerweise nicht auf produktiven Systemen mit offenem Netzwerkzugriff. Schützen Sie auch die Terminalsitzung vor unbefugtem Zugriff.
