Ändern des MySQL-Passworts für Root- und normale Benutzer
Das Root-Passwort für MySQL vergessen? Keine Sorge, das passiert selbst erfahrenen Administratoren. In diesem Artikel erklären wir, wie Sie das MySQL-Root-Passwort für verschiedene Versionen zurücksetzen: MySQL 5.7 und MySQL 8.0+. Zusätzlich behandeln wir das Zurücksetzen des Passworts für einen normalen Datenbankbenutzer.
Für MariaDB lesen Sie bitte unseren separaten Leitfaden.
Root ist der Haupt-Datenbankadministrator. Er hat vollen Zugriff auf alle Daten und Einstellungen. Wenn dieses Passwort verloren geht, können bestimmte Einstellungen nicht mehr geändert und einige Befehle nicht mehr ausgeführt werden.
Alle Operationen werden über die Befehlszeile per SSH durchgeführt. Detailliertere Anweisungen zur Verbindung mit Ihrem Server über dieses Protokoll finden Sie in diesem Artikel.
Überprüfen Sie vorab den Inhalt der Datei /root/.my.cnf. Dort ist oft das aktuelle Root-Passwort für den Zugriff auf MySQL enthalten.
Sie können die Verbindung mit dem folgenden Befehl testen:
mysql -u root -p
Geben Sie dann das Passwort aus der .my.cnf-Datei ein
Wenn das Passwort nicht funktioniert, befolgen Sie die nachstehenden Anweisungen.
Zurücksetzen des MySQL-Root-Passworts
Schritt 1: MySQL stoppen
Um das Passwort zurückzusetzen, müssen Sie zuerst MySQL stoppen. Geben Sie den folgenden Befehl ein:
- Für Debian und Ubuntu:
systemctl stop mysql
- Für CentOS/RockyLinux/AlmaLinux:
systemctl stop mysqld
Schritt 2: Server im abgesicherten Modus neu starten
- Für Debian und Ubuntu:
Stellen Sie sicher, dass das Verzeichnis, von dem MySQL ausgeführt wird, existiert und den richtigen Eigentümer hat:
mkdir -p /var/run/mysqld/ && chown -R mysql: /var/run/mysqld/
Starten Sie den MySQL-Server ohne Zugriffskontrolle
mysqld_safe --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &
Wenn MySQL korrekt startet, sehen Sie eine Meldung wie diese:
2024-11-28T23:50:19.298141Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Um in der Befehlszeile weiterzuarbeiten, drücken Sie „Strg + C“.
- Für CentOS/RockyLinux/AlmaLinux:
sudo -u mysql mysqld --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &
Schritt 3: Verbindung mit MySQL herstellen
mysql --socket=/var/run/mysqld/mysqld.sock
Schritt 4: Passwort zurücksetzen
- Für MySQL 5.7 führen Sie die folgenden Befehle nacheinander aus
FLUSH PRIVILEGES;
Für einen lokalen Benutzer
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NeuesPasswort';
Für einen Netzwerkbenutzer (falls vorhanden):
ALTER USER 'root'@'%' IDENTIFIED BY 'NeuesPasswort';
Dann:
FLUSH PRIVILEGES;
Ersetzen Sie NeuesPasswort durch Ihr gewünschtes neues Passwort.
'user'@'localhost' bezieht sich auf einen lokalen Benutzer, der sich über Socket oder localhost verbindet. 'user'@'%' bezieht sich auf einen Netzwerkbenutzer mit Zugriff von jeder IP-Adresse.
Sie können für diese Benutzer dasselbe oder unterschiedliche Passwörter festlegen. Wenn der Netzwerkbenutzer nicht existiert, führt der Befehl @'%' zu einem Fehler.
Verlassen Sie MySQL mit dem Befehl exit oder durch Drücken von „Strg + D“.
- Für MySQL 8.0+ führen Sie die folgenden Befehle aus
FLUSH PRIVILEGES;
Für einen lokalen Benutzer
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NeuesPasswort';
Für einen Netzwerkbenutzer (falls vorhanden):
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'NeuesPasswort';
Dann:
FLUSH PRIVILEGES;
Ersetzen Sie NeuesPasswort durch Ihr gewünschtes neues Passwort.
Beenden Sie MySQL mit dem Befehl exit oder durch Drücken von „Strg + D“.
Schritt 5: MySQL neu starten
Stoppen Sie MySQL:
mysqladmin shutdown --socket=/var/run/mysqld/mysqld.sock -p
Geben Sie dann das zuvor festgelegte Root-Passwort ein.
Starten Sie MySQL im Normalmodus:
- Für Debian und Ubuntu:
systemctl start mysql
- Für CentOS/RockyLinux/AlmaLinux:
systemctl start mysqld
Ändern des Passworts für normale Benutzer
Wenn Sie das Passwort für einen anderen Benutzer als Root vergessen haben, ist der Ansatz ähnlich:
- Verbinden Sie sich als Root mit dem MySQL-Server:
mysql -u root -p
Geben Sie Ihr MySQL-Root-Passwort ein
- Führen Sie den Befehl zum Ändern des Passworts aus:
- MySQL 5.7
Für einen lokalen Benutzer:
ALTER USER 'username'@'localhost' IDENTIFIED BY 'NeuesBenutzerpasswort';
Für einen Netzwerkbenutzer (falls vorhanden):
ALTER USER 'username'@'%' IDENTIFIED BY 'NeuesBenutzerpasswort';
Dann:
FLUSH PRIVILEGES;
Ersetzen Sie username durch den vorhandenen Benutzernamen und NeuesBenutzerpasswort durch das neue gewünschte Passwort.
Beenden Sie MySQL mit dem Befehl exit oder durch Drücken von „Strg + D“.
- MySQL 8.0+
Für einen lokalen Benutzer:
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NeuesPasswort';
Für einen Netzwerkbenutzer (falls vorhanden):
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'NeuesPasswort';
Ersetzen Sie username durch den vorhandenen Benutzernamen und NewUserPassword durch das neue gewünschte Passwort.
Beenden Sie dann MySQL mit dem Befehl exit oder der Tastenkombination „Strg + D“.
Bei Bedarf können Sie alle Benutzer mit der folgenden Abfrage auflisten:
SELECT User, Host FROM mysql.user;
Verbindung mit MySQL lokal ohne Passwortabfrage herstellen
Um zu vermeiden, dass Sie bei jeder Verbindung mit MySQL von der Befehlszeile auf Ihrem Server jedes Mal manuell das Passwort eingeben müssen, können Sie es in der Datei /root/.my.cnf speichern. Öffnen Sie die Datei in einem Texteditor:
nano /root/.my.cnf
Fügen Sie die folgenden Zeilen hinzu:
[client]
user = root
password = IhrRootPasswort
Ersetzen Sie IhrRootPasswort durch Ihr tatsächliches Root-Passwort.
Speichern Sie dann die Datei mit der Tastenkombination „Strg + O“ und beenden Sie den Texteditor mit „Strg + X“.
Setzen Sie aus Sicherheitsgründen strengere Berechtigungen für die .my.cnf-Datei:
chmod 600 /root/.my.cnf
Nach dieser Einrichtung können Sie sich einfach mit folgendem Befehl verbinden:
mysql -u root