MySQL-Passwortverwaltung: Wie man Passwörter festlegt, ändert, zurücksetzt und sichert (Windows, Linux, Mac)

目次

1. Einführung

Die Bedeutung der MySQL-Passwortverwaltung

MySQL ist ein weltweit weit verbreitetes Datenbankmanagementsystem. Allerdings liegt die Grundlage seiner Sicherheitsverwaltung in der richtigen Passwortkonfiguration und -verwaltung. Ohne angemessene Passwortverwaltung könnten Sie auf folgende Risiken stoßen:

  • Unautorisierter Zugriff : Schwache Passwörter machen Ihr System anfällig für externe Angriffe.
  • Datenschutzverletzung : Sensible Informationen könnten durch bösartige Benutzer offengelegt werden.
  • Systemmanipulation : Löschung oder Änderung von Daten könnte den normalen Betrieb von Websites und Anwendungen beeinträchtigen.

Um diese Risiken zu vermeiden, ist es essenziell, starke Passwörter zu setzen und sie regelmäßig zu ändern. In diesem Artikel erklären wir die folgenden Aspekte der MySQL-Passwortverwaltung im Detail:

Wie man Passwörter für neue Benutzer setzt
Wie man Passwörter für bestehende Benutzer ändert
Wie man ein vergessenes Passwort zurücksetzt
Wie man die Passwortstärke überprüft
Häufige Fehler und wie man sie behebt
Empfohlene Einstellungen zur Verbesserung der Sicherheit

Durch das Lesen dieses Artikels werden Sie das notwendige Wissen und die Fähigkeiten erlangen, um MySQL-Passwörter richtig zu verwalten, lesen Sie daher bis zum Ende durch.

2. So setzen und ändern Sie MySQL-Passwörter

Erstellen eines neuen Benutzers und Setzen eines Passworts

Dieser Abschnitt erklärt, wie man einen neuen Benutzer in MySQL erstellt und ein Passwort setzt.

1. Anmelden bei MySQL

Melden Sie sich zunächst als MySQL-Administrator an (z. B. als root-Benutzer).

mysql -u root -p

-u root ist eine Option, um als root-Benutzer anzumelden, und -p zeigt eine Passwortabfrage an.

2. Neuen Benutzer erstellen und Passwort setzen

Verwenden Sie den Befehl CREATE USER, um einen neuen Benutzer zu erstellen und ein Passwort zu setzen.

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'secure_password';
  • 'newuser'@'localhost' : Gibt den Benutzernamen ( newuser ) und den Host ( localhost ) an, von dem aus der Benutzer verbinden kann.
  • 'secure_password' : Das zu setzende Passwort (stellen Sie sicher, dass Sie ein starkes Passwort verwenden).

3. Geeignete Berechtigungen erteilen

Sie müssen dem neuen Benutzer Datenbankberechtigungen erteilen. Zum Beispiel, um alle Berechtigungen zu erteilen:

GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;
  • ALL PRIVILEGES : Erteilt alle Berechtigungen.
  • *.* : Erlaubt Zugriff auf alle Datenbanken und Tabellen.
  • WITH GRANT OPTION : Erlaubt dem Benutzer, Berechtigungen an andere Benutzer weiterzugeben.

4. Die Berechtigungen anwenden

Führen Sie FLUSH PRIVILEGES aus, um die Änderungen anzuwenden.

FLUSH PRIVILEGES;

Sie haben nun erfolgreich einen neuen Benutzer mit einem sicheren Passwort und geeigneten Berechtigungen erstellt.

Ändern des Passworts eines bestehenden Benutzers

Dieser Abschnitt erklärt, wie man das Passwort eines bestehenden MySQL-Benutzers ändert.

1. Anmelden bei MySQL

Melden Sie sich mit administrativen Berechtigungen an.

mysql -u root -p

2. Passwort mit ALTER USER ändern (MySQL 5.7 und neuer)

ALTER USER 'existinguser'@'localhost' IDENTIFIED BY 'new_secure_password';
  • 'existinguser'@'localhost' : Der zu ändernde Benutzername und Host.
  • 'new_secure_password' : Das neue Passwort.

3. Passwort mit SET PASSWORD ändern (MySQL 5.6 und früher)

SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('new_secure_password');

Die Verwendung der PASSWORD()-Funktion stellt sicher, dass das Passwort vor der Speicherung richtig verschlüsselt wird.

4. Die Änderungen anwenden

Vergessen Sie nicht, FLUSH PRIVILEGES; auszuführen.

FLUSH PRIVILEGES;

Mit dieser Methode können Sie nun sicher das Passwort eines bestehenden Benutzers ändern.

3. So setzen Sie ein MySQL-Passwort zurück, wenn Sie es vergessen haben

Selbst wenn Sie Ihr MySQL-Passwort vergessen haben, können Sie es durch die richtige Vorgehensweise zurücksetzen. Dieser Abschnitt erklärt, wie man Passwörter auf Windows, Linux und Mac zurücksetzt.

So setzen Sie ein MySQL-Passwort auf Windows zurück

Unter Windows ist ein gängiger Ansatz, das MySQL‑Root‑Passwort zurückzusetzen, die skip-grant-tables‑Option zu verwenden.

1. MySQL‑Dienst stoppen

Zuerst stoppen Sie den laufenden MySQL‑Dienst unter Windows.

net stop mysql

Alternativ können Sie services.msc öffnen und den MySQL‑Dienst manuell stoppen.

2. MySQL mit mysqld --skip-grant-tables starten

mysqld --skip-grant-tables --skip-networking

3. Bei MySQL anmelden

mysql -u root

4. Neues Passwort festlegen

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

Oder, für MySQL 5.6 und früher, verwenden Sie SET PASSWORD.

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

5. MySQL neu starten

net stop mysql
net start mysql

So setzen Sie ein MySQL‑Passwort unter Linux / Mac zurück

1. MySQL‑Dienst stoppen

sudo systemctl stop mysql

2. MySQL im --skip-grant-tables‑Modus starten

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

3. Bei MySQL anmelden

mysql -u root

4. Passwort zurücksetzen

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

5. MySQL neu starten

sudo systemctl start mysql

Änderungen bei den Passwort‑Zurücksetzungsmethoden in MySQL 8.0 und neuer

In MySQL 8.0 hat sich der Mechanismus zur Passwortverwaltung geändert, daher sollten Sie den folgenden Punkt beachten.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password';

Dies ermöglicht es Ihnen, bei Bedarf die alte Passwort‑Authentifizierungsmethode weiter zu verwenden.

4. Fehlersuche bei häufigen Fehlern beim Ändern von MySQL‑Passwörtern

Beim Versuch, MySQL‑Passwörter zu ändern, können Fehler auftreten. Dieser Abschnitt erklärt die Ursachen und Lösungen für häufige Fehler.

FEHLER 1045 (28000): Zugriff für Benutzer verweigert

Ursache des Fehlers

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Dieser Fehler tritt beim Anmelden bei MySQL auf, wenn das Passwort falsch ist oder die Berechtigungen unzureichend sind.

Lösung

  1. Überprüfen Sie das eingegebene Passwort erneut
  2. Geben Sie den korrekten Benutzernamen und Host an
    SELECT User, Host FROM mysql.user;
    
  1. Setzen Sie das Passwort zurück (siehe Abschnitt zur Passwort‑Zurücksetzung)
  2. Konfigurieren Sie die Berechtigungen korrekt
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

FEHLER 1133: Keine passende Zeile in der Benutzertabelle gefunden

Ursache des Fehlers

ERROR 1133: Can't find any matching row in the user table

Dieser Fehler tritt auf, wenn der angegebene Benutzer nicht existiert.

Lösung

  1. Überprüfen Sie die aktuelle Benutzerliste
    SELECT User, Host FROM mysql.user;
    
  1. Erstellen Sie den Benutzer neu
    CREATE USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
    
  1. Geben Sie den korrekten Host an (verwenden Sie localhost oder % entsprechend)

FEHLER 1820: Sie müssen Ihr Passwort zurücksetzen

Ursache des Fehlers

ERROR 1820: You must reset your password using ALTER USER statement before executing this statement.

Dieser Fehler tritt auf, wenn das Passwort abgelaufen ist.

Lösung

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

Um die Passwortablaufzeit zu deaktivieren:

SET GLOBAL default_password_lifetime = 0;

FEHLER 2059: Plugin caching_sha2_password konnte nicht geladen werden

Ursache des Fehlers

ERROR 2059: Plugin caching_sha2_password could not be loaded

In MySQL 8.0 und neuer hat sich das Standard‑Authentifizierungs‑Plugin zu caching_sha2_password geändert, was bei einigen Clients Fehler verursachen kann.

Lösung

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password';

Oder fügen Sie Folgendes zur MySQL‑Konfigurationsdatei (my.cnf oder my.ini) hinzu und starten MySQL neu.

[mysqld]
default_authentication_plugin=mysql_native_password

MySQL neu starten:

sudo systemctl restart mysql

5. MySQL-Sicherheits-Härtung und empfohlene Einstellungen

Die Stärkung der MySQL-Sicherheit ist entscheidend, um die Datenbanksicherheit zu verbessern und unbefugten Zugriff und Datenverletzungen zu verhindern. Dieser Abschnitt stellt empfohlene Konfigurationen vor, um die MySQL-Sicherheit zu erhöhen.

Starke Passwörter festlegen

Die Verwendung schwacher Passwörter in MySQL macht Ihr System zu einem leichten Ziel für Angreifer. Konfigurieren Sie die Einstellungen, um die Passwortstärke zu erhöhen.

Aktivieren einer Passwort‑Richtlinie

Überprüfen Sie die aktuelle Passwort‑Richtlinie:

SHOW VARIABLES LIKE 'validate_password%';

Konfigurieren Sie eine starke Passwort‑Richtlinie:

SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.mixed_case_count = 1;
SET GLOBAL validate_password.number_count = 1;
SET GLOBAL validate_password.special_char_count = 1;

Passwortablauf festlegen

Regelmäßiges Ändern von Passwörtern erhöht die Sicherheit.

Überprüfen Sie die aktuelle Einstellung für den Passwortablauf:

SHOW VARIABLES LIKE 'default_password_lifetime';

Setzen Sie den Passwortablauf auf 90 Tage:

SET GLOBAL default_password_lifetime = 90;

Sicherheit des root‑Benutzers stärken

Remote‑Zugriff für den root‑Benutzer einschränken

Überprüfen Sie die aktuelle Host‑Konfiguration für den root‑Benutzer:

SELECT User, Host FROM mysql.user WHERE User = 'root';

Deaktivieren Sie den Remote‑Zugriff für root:

UPDATE mysql.user SET Host='localhost' WHERE User='root';
FLUSH PRIVILEGES;

Erstellen Sie ein alternatives Administratorkonto und deaktivieren Sie root

CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;
RENAME USER 'root'@'localhost' TO 'disabled_root'@'localhost';
FLUSH PRIVILEGES;

MySQL-Remote-Verbindungen einschränken

Bearbeiten Sie die Konfigurationsdatei (my.cnf oder my.ini):

[mysqld]
bind-address = 127.0.0.1

Konfigurieren Sie die Firewall unter Linux:

sudo ufw deny 3306

Erlauben Sie nur eine bestimmte IP‑Adresse:

sudo ufw allow from 192.168.1.100 to any port 3306

Unnötige Konten und Berechtigungen entfernen

Überprüfen Sie die aktuelle Benutzerliste:

SELECT User, Host FROM mysql.user;

Entfernen Sie anonyme Benutzer:

DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;

Entfernen Sie die unnötige Testdatenbank:

DROP DATABASE test;
FLUSH PRIVILEGES;

MySQL-Logging aktivieren

Aktivieren Sie das Fehlerprotokoll:

[mysqld]
log_error = /var/log/mysql/error.log

Aktivieren Sie das allgemeine Abfrageprotokoll:

general_log = 1
general_log_file = /var/log/mysql/general.log

MySQL neu starten:

sudo systemctl restart mysql

6. Häufig gestellte Fragen (FAQ)

Dieser Abschnitt fasst häufige Fragen und Lösungen im Zusammenhang mit der MySQL‑Passworteinrichtung, -Änderung und -Zurücksetzung zusammen.

Q1: Was ist der einfachste Weg, ein vergessenes MySQL‑root‑Passwort wiederherzustellen?

Lösung

  1. MySQL stoppen
    sudo systemctl stop mysql
    
  1. MySQL im skip-grant-tables‑Modus starten
    sudo mysqld_safe --skip-grant-tables --skip-networking &
    
  1. Bei MySQL anmelden
    mysql -u root
    
  1. Ein neues Passwort festlegen
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
    
  1. MySQL neu starten
    sudo systemctl restart mysql
    

Q2: Was soll ich tun, wenn ich “ERROR 1045 (28000): Access denied for user” sehe?

Lösung

  1. Überprüfen Sie das eingegebene Passwort
    mysql -u root -p
    
  1. Bestätigen Sie, dass der Benutzer existiert
    SELECT User, Host FROM mysql.user;
    
  1. Setzen Sie das Passwort zurück (siehe vorherige Anweisungen)

  2. Gewähren Sie die entsprechenden Berechtigungen

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

Q3: Gibt es einen Unterschied zwischen MySQL 5.6 und 8.0 beim Ändern von Passwörtern?

Passwort ändern in MySQL 5.6 und früher

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

Passwort ändern in MySQL 8.0 und später

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

In MySQL 8.0 ist caching_sha2_password die Standard-Authentifizierungsmethode, daher können ältere Clients die folgende Anpassung benötigen:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password';

Q4: Wie kann ich die MySQL-Passwortrichtlinie stärken?

Eine starke Passwortrichtlinie konfigurieren

SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.mixed_case_count = 1;
SET GLOBAL validate_password.number_count = 1;
SET GLOBAL validate_password.special_char_count = 1;

Q5: Ist es sicher, den MySQL-Root-Benutzer zu deaktivieren?

Lösung

  1. Ein Administratorkonto erstellen
    CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'secure_password';
    GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;
    
  1. Das Root-Konto deaktivieren
    RENAME USER 'root'@'localhost' TO 'disabled_root'@'localhost';
    FLUSH PRIVILEGES;
    

Q6: Gibt es Werkzeuge, um MySQL-Passwörter sicher zu verwalten?

Lösung

  1. mysql_config_editor (Official MySQL Tool)
    mysql_config_editor set --login-path=local --host=localhost --user=root --password
    

Damit können Sie sich anmelden, ohne das Passwort explizit einzugeben.

mysql --login-path=local
  1. Passwort-Manager (Bitwarden, 1Password, KeePass usw.)
  • Nützlich zum Erzeugen und sicheren Speichern starker Passwörter.

Q7: Kann ich MySQL-Passwortänderungen protokollieren?

Lösung

Den allgemeinen Abfrage-Log aktivieren

[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log

MySQL neu starten:

sudo systemctl restart mysql

7. Fazit

Dieser Artikel erklärte alles von den Grundlagen bis zu fortgeschrittenen Techniken der MySQL-Passwortverwaltung. Nachfolgend finden Sie eine Zusammenfassung der wichtigsten Punkte sowie eine Checkliste zur ordnungsgemäßen Verwaltung von MySQL-Passwörtern.

Wichtige Punkte der MySQL-Passwortverwaltung

Eine korrekte Passwortkonfiguration und -verwaltung bilden die Grundlage der Sicherheit
Starke Passwörter beim Anlegen neuer Benutzer festlegen
Passwörter regelmäßig ändern und Ablaufrichtlinien konfigurieren
Wiederherstellungsverfahren für vergessene Passwörter verstehen
Fehler bei Passwortänderungen korrekt beheben
Remote-Zugriff und Root-Benutzerverwaltung zur Sicherheitsverstärkung optimieren
Logging aktivieren, um passwortbezogene Aktivitäten zu verfolgen

MySQL-Passwortverwaltungs-Checkliste

Checklist ItemStatus
Have you set a strong root password for MySQL?✅ / ❌
Do you use the CREATE USER command when creating new users?✅ / ❌
Have you enabled the validate_password plugin and configured a strong password policy?✅ / ❌
Do you regularly change passwords and set expiration policies?✅ / ❌
Have you disabled remote access for the root user?✅ / ❌
Have you removed unnecessary or anonymous accounts?✅ / ❌
Do you understand how to reset passwords using skip-grant-tables mode?✅ / ❌
Do you understand how to resolve ERROR 1045 and ERROR 1820 during password changes?✅ / ❌
Have you enabled MySQL logs (general_log and error_log)?✅ / ❌

Empfohlene nächste Schritte nach dem Lesen dieses Artikels

  1. Überprüfen Sie Ihre aktuelle Passwortrichtlinie und stärken Sie sie bei Bedarf
    SHOW VARIABLES LIKE 'validate_password%';
    SET GLOBAL validate_password.policy = STRONG;
    SET GLOBAL validate_password.length = 12;
    
  1. Unnötige Konten entfernen
    DELETE FROM mysql.user WHERE User='';
    DROP DATABASE test;
    FLUSH PRIVILEGES;
    
  1. Remote-Zugriff für den Root-Benutzer einschränken
    UPDATE mysql.user SET Host='localhost' WHERE User='root';
    FLUSH PRIVILEGES;
    
  1. Regelmäßige Passwortabläufe konfigurieren
    SET GLOBAL default_password_lifetime = 90;
    
  1. Logging für die Überwachung aktivieren
    [mysqld]
    log_error = /var/log/mysql/error.log
    general_log = 1
    general_log_file = /var/log/mysql/general.log
    

MySQL neu starten:

sudo systemctl restart mysql

Verwandte Artikel zum Vertiefen

📌 Detaillierter Leitfaden zur MySQL-Benutzerrechteverwaltung
📌 MySQL-Backup- und Wiederherstellungsverfahren
📌 Wie man MySQL-Datenbanken optimiert
📌 MySQL mit externer Authentifizierung (LDAP oder OAuth) konfigurieren

Abschließende Gedanken

MySQL‑Passwortverwaltung ist wesentliches Wissen zum Schutz der Datenbanksicherheit.
Wenden Sie die in diesem Leitfaden behandelten Praktiken an und stellen Sie sichere Datenbankverwaltung sicher! 💪