Wie man MariaDB-Benutzer auflistet und verwaltet: Vollständiger Leitfaden zu Benutzerkonten und Berechtigungen

目次

1. Einführung

MariaDB ist eines der heute am weitesten verbreiteten Datenbankverwaltungssysteme, das für seine Benutzerfreundlichkeit und hohe Leistung bekannt ist. Unter seinen vielen Funktionen spielt das Benutzermanagement eine entscheidende Rolle. Durch eine ordnungsgemäße Verwaltung der Benutzer können Sie die Datensicherheit gewährleisten und effiziente Abläufe erreichen.

Dieser Artikel konzentriert sich darauf, wie man die Benutzerliste in MariaDB überprüft. Konkret erklären wir, wie man mit SQL-Befehlen eine Liste von Benutzern abruft, welche Unterschiede und Vorteile die einzelnen Methoden haben sowie die zugehörigen Berechtigungseinstellungen und wichtige Überlegungen.

Dieser Leitfaden ist nicht nur für MariaDB-Anfänger gedacht, sondern auch für diejenigen, die derzeit Produktionsumgebungen verwalten. Lesen Sie ihn bitte bis zum Ende.

2. Wie man die Benutzerliste in MariaDB überprüft

Es gibt mehrere Möglichkeiten, die Benutzerliste in MariaDB zu prüfen. Jede Methode hat ihre eigenen Eigenschaften, und die Auswahl der passenden Methode basierend auf Ihrem Zweck ermöglicht ein effizientes Benutzermanagement. Im Folgenden erläutern wir drei repräsentative Methoden im Detail.

2.1 Verwendung der Tabelle mysql.user

Die grundlegendste Methode, um Benutzerinformationen in MariaDB zu prüfen, besteht darin, direkt die Tabelle mysql.user zu referenzieren. Diese Tabelle speichert alle Benutzerkontoinformationen.

Beispielbefehl

Sie können die Benutzerliste anzeigen, indem Sie das folgende SQL ausführen:

SELECT Host, User FROM mysql.user;

Erklärung

  • Host : Gibt den Hostnamen an, von dem aus der Benutzer sich verbinden darf.
  • User : Der in MariaDB registrierte Benutzername.

Anwendungsszenarien

  • Wenn Sie alle Benutzer in einer Liste anzeigen möchten.
  • Wenn Sie prüfen möchten, welche Benutzer von einem bestimmten Host aus verbinden können.

Wichtige Hinweise

  • Sie benötigen ausreichende Berechtigungen (typischerweise root-Rechte), um die Tabelle mysql.user zu referenzieren.
  • In einigen Versionen wird die direkte Verwendung von mysql.user nicht empfohlen. Prüfen Sie stets die offizielle Dokumentation für Ihre Version.

2.2 Verwendung des SHOW GRANTS Befehls

Sie können den Befehl SHOW GRANTS verwenden, um die einem bestimmten Benutzer gewährten Berechtigungen zu prüfen.

Beispielbefehl

Geben Sie den Benutzer wie unten gezeigt an, um seine Berechtigungen anzuzeigen:

SHOW GRANTS FOR 'username'@'hostname';

Erklärung

  • Sie können detaillierte Berechtigungen für jeden Benutzer einsehen.
  • Beispielausgabe:
    GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost';
    

Anwendungsszenarien

  • Wenn Sie überprüfen möchten, ob die Berechtigungseinstellungen eines Benutzers korrekt sind.
  • Bei der Fehlersuche von Problemen, die durch falsche Berechtigungskonfiguration verursacht wurden.

Wichtige Hinweise

  • Wenn Ihnen die erforderlichen Berechtigungen fehlen, können Sie diesen Befehl nicht ausführen.

2.3 Verwendung von information_schema.USER_PRIVILEGES

MariaDB enthält eine Systemdatenbank namens information_schema. Durch Abfragen der Tabelle USER_PRIVILEGES darin können Sie Berechtigungsinformationen für alle Benutzer anzeigen.

Beispielbefehl

SELECT * FROM information_schema.USER_PRIVILEGES;

Erklärung

  • Diese Methode ermöglicht es, globale Berechtigungen für jeden Benutzer zu überprüfen.
  • Die Ausgabe enthält Informationen wie:
  • GRANTEE : Benutzername und Hostname.
  • PRIVILEGE_TYPE : Art der gewährten Berechtigung.
  • IS_GRANTABLE : Ob die Berechtigung an andere vergeben werden kann.

Anwendungsszenarien

  • Wenn Sie Berechtigungen für mehrere Benutzer gleichzeitig überprüfen möchten.
  • Bei der Überprüfung globaler Berechtigungseinstellungen.

Wichtige Hinweise

  • Einige Berechtigungen sind in dieser Tabelle möglicherweise nicht vollständig sichtbar.

Zusammenfassung

Durch die richtige Anwendung dieser Methoden können Sie MariaDB-Benutzerkonten und Berechtigungsinformationen effektiv verwalten. Jeder Ansatz hat seine Stärken, daher ist es wichtig, den passenden Ansatz basierend auf Ihrem konkreten Ziel auszuwählen.

3. Detaillierte Verwaltung von MariaDB-Benutzern

MariaDB ermöglicht es Ihnen, detaillierte Benutzerinformationen einzusehen und Berechtigungen effizient zu verwalten. In diesem Abschnitt erklären wir die wesentlichen Vorgänge, die für eine ordnungsgemäße Benutzerverwaltung erforderlich sind.

3.1 Überprüfung von Benutzerinformationen

In MariaDB können Sie den Befehl SHOW CREATE USER verwenden, um detaillierte Informationen zu einem bestimmten Benutzer abzurufen. Dieser Befehl reproduziert die Anweisung, die beim Erstellen des Benutzers verwendet wurde.

Example Command

Führen Sie das folgende SQL aus, um detaillierte Informationen über den angegebenen Benutzer anzuzeigen:

SHOW CREATE USER 'username'@'hostname';

Explanation

Dieser Befehl wird verwendet, um die Authentifizierungsmethode des Benutzers und weitere Attribute zu überprüfen. Beispielausgabe:

CREATE USER 'user1'@'localhost' IDENTIFIED VIA mysql_native_password USING '***';

Usage Scenarios

  • Wenn Sie die Authentifizierungsmethode eines Benutzers bestätigen möchten.
  • Wenn Sie Benutzerattribute auf mögliche Probleme überprüfen.

Important Notes

  • Für die Ausführung dieses Befehls sind entsprechende Rechte erforderlich (typischerweise root-Rechte).

3.2 Setting and Modifying User Privileges

MariaDB ermöglicht eine flexible Rechtekonfiguration für jeden Benutzer. Sie können die Befehle GRANT und REVOKE verwenden, um Rechte zu verwalten.

Granting Privileges

Das folgende SQL gewährt einem bestimmten Benutzer spezifische Rechte:

GRANT SELECT, INSERT ON database_name.* TO 'username'@'hostname';

Revoking Privileges

Um unnötige Rechte zu entfernen, verwenden Sie den Befehl REVOKE:

REVOKE INSERT ON database_name.* FROM 'username'@'hostname';

Explanation

  • Der Befehl GRANT weist Betriebsrechte für bestimmte Datenbanken oder Tabellen zu.
  • Der Befehl REVOKE entfernt nicht mehr benötigte Rechte.

Usage Scenarios

  • Beim Konfigurieren von Rechten für einen neuen Benutzer.
  • Beim Entfernen unnötiger Rechte zur Erhöhung der Sicherheit.

Important Notes

  • Eine falsche Rechtekonfiguration kann Sicherheitsrisiken erhöhen, daher sollten Sie vorsichtig vorgehen.

3.3 Deleting a User

Das Entfernen unnötiger Benutzer erhöht die Sicherheit der Datenbank. Verwenden Sie den Befehl DROP USER, um einen Benutzer zu löschen.

Example Command

Führen Sie das folgende SQL aus, um einen angegebenen Benutzer zu löschen:

DROP USER 'username'@'hostname';

Explanation

  • Wenn ein Benutzer gelöscht wird, werden alle ihm gewährten Rechte gleichzeitig entfernt.
  • Bei Erfolg zeigt MariaDB eine „Query OK“-Meldung an.

Usage Scenarios

  • Beim dauerhaften Entfernen eines unnötigen Benutzers aus der Datenbank.
  • Beim Aufräumen ungenutzter Konten aus Sicherheitsgründen.

Important Notes

  • Wenn der Benutzer gerade verbunden ist, können unbeabsichtigte Fehler auftreten.
  • Das Löschen eines Benutzers kann nicht rückgängig gemacht werden, daher sollten Sie vor der Ausführung sorgfältig prüfen.

Summary

Eine ordnungsgemäße Benutzerverwaltung in MariaDB ist entscheidend, um sowohl die Sicherheit als auch die betriebliche Effizienz zu verbessern. Durch das Überprüfen von Benutzerinformationen, das Konfigurieren und Anpassen von Rechten sowie das Löschen unnötiger Benutzer können Sie eine sichere und effiziente Datenbankumgebung aufrechterhalten.

4. Key Considerations for MariaDB User Management

Um MariaDB-Benutzer korrekt zu verwalten, müssen Sie mehrere wichtige Punkte beachten. Dieser Abschnitt erklärt, wie man mit unzureichenden Rechten umgeht, zentrale Sicherheitsaspekte berücksichtigt und Unterschiede zwischen Versionen behandelt.

4.1 How to Handle Insufficient Privileges

Das Überprüfen der Benutzerliste oder der Rechte in MariaDB erfordert ausreichende Berechtigungen. Wenn ein Vorgang aufgrund unzureichender Rechte fehlschlägt, können Sie die folgenden Ansätze versuchen.

Example Error

Möglicherweise sehen Sie einen Fehler wie den folgenden:

ERROR 1045 (28000): Access denied for user 'user1'@'localhost'

How to Fix It

  1. Stellen Sie sicher, dass Sie mit dem richtigen Benutzer angemeldet sind
  • Wenn erforderliche Rechte (z. B. das SELECT-Recht) fehlen, können Sie die Tabelle mysql.user möglicherweise nicht abfragen.
  • Als Umgehungslösung versuchen Sie, sich als root-Benutzer anzumelden und den Vorgang zu wiederholen.
  1. Melden Sie sich als root-Benutzer an
  • Die Anmeldung als root ermöglicht die meisten administrativen Vorgänge: bash mysql -u root -p
  1. Rechte neu konfigurieren
  • Gewähren Sie bei Bedarf die erforderlichen Rechte: sql GRANT ALL PRIVILEGES ON *.* TO 'username'@'hostname'; FLUSH PRIVILEGES;

Wichtige Hinweise

  • Vermeiden Sie das Erteilen mehr Privilegien als notwendig. Übermäßige Privilegien erhöhen das Sicherheitsrisiko.

4.2 Best Practices für die Sicherheit

Die Sicherheit sollte die oberste Priorität bei der MariaDB-Benutzerverwaltung sein. Nachfolgend sind wichtige Punkte aufgeführt, die zu beachten sind.

Unbenutzte Benutzer entfernen

  • Das Beibehalten unbenutzter Benutzerkonten kann sie zu potenziellen Zielen für Angreifer machen.
  • Überprüfen Sie regelmäßig Benutzer und entfernen Sie unnötige Konten:
    DROP USER 'username'@'hostname';
    

Eine starke Passwortrichtlinie verwenden

  • Beim Erstellen von Benutzern legen Sie Passwörter fest, die schwer zu erraten sind:
    CREATE USER 'user1'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    

Externen Zugriff einschränken

  • Begrenzen Sie, welche Hosts verbinden können, um unnötigen externen Zugriff zu verhindern:
    CREATE USER 'user1'@'192.168.0.1' IDENTIFIED BY 'password';
    

Logs überwachen

  • Überprüfen Sie regelmäßig MariaDB-Logs (z. B. general_log und error_log ), um verdächtigen Zugriff zu erkennen.

4.3 Unterschiede zwischen MariaDB-Versionen

Das Verhalten von MariaDB und die empfohlenen Praktiken können je nach Version variieren, daher sollten Sie Ihren Ansatz entsprechend anpassen.

Abschaffung des direkten Zugriffs auf mysql.user

  • In neueren Versionen wird das direkte Abfragen der Tabelle mysql.user möglicherweise abgeraten. In diesem Fall verwenden Sie stattdessen SHOW GRANTS oder information_schema.

Authentifizierungs-Plugins

  • Je nach Version kann das Standard-Authentifizierungs-Plugin unterschiedlich sein. Ältere Versionen verwenden häufig mysql_native_password , während neuere Versionen sicherere Optionen wie caching_sha2_password empfehlen.

Empfohlene Schritte

  • Überprüfen Sie Ihre MariaDB-Version:
    SELECT VERSION();
    
  • Beziehen Sie sich auf die offizielle Dokumentation für Ihre Version und folgen Sie den neuesten Best Practices.

Zusammenfassung

Durch das Verständnis dieser wichtigen Überlegungen zur MariaDB-Benutzerverwaltung können Sie die Sicherheit stärken und die betriebliche Effizienz verbessern. Achten Sie auf Privilegienprobleme und versionsspezifische Unterschiede und übernehmen Sie aktuelle Sicherheitsmaßnahmen.

5. FAQ (Häufig gestellte Fragen)

Nachfolgend sind gängige Fragen und Antworten zur MariaDB-Benutzerverwaltung aufgeführt. Dieser Abschnitt behandelt die Konfiguration von Privilegien, die Fehlerbehandlung und Probleme mit dem Root-Benutzer, mit denen Administratoren häufig konfrontiert sind.

Q1: Wie kann ich Privilegien nur einem bestimmten Benutzer erteilen?

Antwort

Sie können den GRANT-Befehl verwenden, um nur die notwendigen Privilegien einem bestimmten Benutzer zu erteilen. Nachfolgend ein Beispiel, das SELECT– und INSERT-Privilegien auf eine bestimmte Datenbank erteilt:

GRANT SELECT, INSERT ON database_name.* TO 'username'@'hostname';
FLUSH PRIVILEGES;

Wichtige Punkte

  • Durch die Angabe von database_name.* gelten die Privilegien für alle Tabellen in dieser Datenbank.
  • Führen Sie FLUSH PRIVILEGES; aus, um sicherzustellen, dass die Änderungen wirksam werden.

Q2: Was sind die Ursachen und Lösungen, wenn die Benutzerliste nicht angezeigt wird?

Antwort

Wenn Sie die Benutzerliste nicht anzeigen können, sind folgende Ursachen üblich.

  1. Unzureichende Privilegien
  • Wenn erforderliche Privilegien (z. B. das SELECT-Privileg) fehlen, können Sie die Tabelle mysql.user möglicherweise nicht abfragen.
  • Als Workaround versuchen Sie, sich als Root-Benutzer anzumelden und den Vorgang zu wiederholen.
  1. Den korrekten Befehl verwenden
  • In neueren MariaDB-Versionen wird mysql.user möglicherweise abgeraten. In diesem Fall verwenden Sie stattdessen den folgenden Befehl: SELECT User, Host FROM information_schema.USER_PRIVILEGES;
  1. Ihre MariaDB-Version überprüfen
  • Da empfohlene Methoden je nach Version unterschiedlich sein können, überprüfen Sie zuerst Ihre aktuelle Version: SELECT VERSION();

Q3: Was sollte ich tun, wenn der Root-Benutzer gesperrt ist?

Antwort

Wenn der Root-Benutzer gesperrt ist und Sie sich nicht anmelden können, folgen Sie diesen Schritten.

  1. MariaDB im sicheren Modus starten
  • Stoppen Sie den Server und starten Sie ihn im sicheren Modus neu: bash mysqld_safe --skip-grant-tables &
  1. Das Root-Passwort zurücksetzen
  • Melden Sie sich im sicheren Modus bei MariaDB an und setzen Sie das Root‑Passwort mit folgendem Befehl zurück: UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES;
  1. Verlassen Sie den sicheren Modus und starten Sie normal neu
  • Starten Sie MariaDB neu und kehren Sie zum normalen Betrieb zurück.

Wichtige Hinweise

Da die Authentifizierung im sicheren Modus umgangen wird, stellen Sie sicher, dass keine Dritten während dieser Zeit auf den Server zugreifen können.

Q4: Ich erhalte einen Fehler beim Löschen eines Benutzers. Was soll ich tun?

Antwort

Wenn Sie beim Löschen eines Benutzers einen Fehler erhalten, sind die folgenden Probleme häufige Ursachen.

  1. Der zu löschende Benutzer wird derzeit verwendet
  • Wenn der Benutzer gerade verbunden ist, kann das Löschen fehlschlagen.
  • Als Vorgehensweise können Sie die Verbindung des Benutzers gewaltsam beenden: SHOW PROCESSLIST; KILL connection_id;
  1. Abhängige Objekte existieren
  • Wenn es Objekte gibt, die dem Benutzer zugeordnet sind (z. B. Views oder Stored Procedures), müssen Sie diese zuerst entfernen.

Q5: Wie kann ich die Ausgabe von SHOW GRANTS speichern?

Antwort

Sie können die Ausgabe von SHOW GRANTS in einer Datei speichern, um sie später zu prüfen.

  1. In eine Datei speichern
  • Verwenden Sie den mysql‑Client in der Befehlszeile und leiten Sie die Ausgabe um: bash mysql -u root -p -e "SHOW GRANTS FOR 'username'@'hostname';" > grants_output.txt
  1. Als SQL‑Anweisungen speichern
  • Speichern Sie die Ausgabe in einer Textdatei, damit Sie sie später wiederverwenden können.

Zusammenfassung

In diesem FAQ‑Abschnitt haben wir häufige Fragen zur Verwaltung von MariaDB‑Benutzern beantwortet. Nutzen Sie diese Antworten, um Probleme zu beheben und Ihre Betriebseffizienz zu steigern.