MariaDB-Benutzerverwaltungsleitfaden: So erstellen Sie Benutzer, gewähren Berechtigungen und beheben häufige Fehler

目次

Einführung

1.1 Möchten Sie lernen, wie man Benutzer in MariaDB erstellt?

Haben Sie jemals einen neuen Benutzer in MariaDB erstellen und geeignete Berechtigungen konfigurieren wollen?
Zum Beispiel könnten Sie auf folgende Situationen gestoßen sein:

  • Sie haben CREATE USER ausgeführt, können aber nicht anmelden
  • Sie haben Berechtigungen mit GRANT vergeben, aber sie wurden nicht angewendet
  • Sie sind unsicher, wie man richtige Berechtigungen in einer Produktionsumgebung konfiguriert
  • Sie möchten unnötige Benutzer sicher löschen

Wenn Sie mit diesen Problemen konfrontiert sind, hilft Ihnen dieser Artikel dabei, den gesamten Prozess vom Erstellen von Benutzern über das Verwalten von Berechtigungen bis hin zum Löschen von Benutzern in MariaDB vollständig zu verstehen.

1.2 Was Sie in diesem Artikel lernen werden

Dieser Artikel bietet eine detaillierte Erklärung der folgenden Aspekte des Benutzermanagements in MariaDB:

  • Wie man Benutzer in MariaDB erstellt und löscht
  • Wie man Berechtigungen vergibt und verwaltet (Best Practices für richtige Berechtigungseinstellungen)
  • Häufige Fehler und wie man sie behebt
  • Beste Betriebspraktiken für Entwicklungsumgebungen und Produktionsumgebungen

Alle Themen werden mit anfängerfreundlichen SQL-Beispielen erklärt, sodass Sie gleichzeitig lernen und üben können.

1.3 Zielgruppe

Dieser Artikel richtet sich an:

  • Anfänger : Diejenigen, die das Benutzermanagement in MariaDB zum ersten Mal lernen
  • Ingenieure : Diejenigen, die richtige Berechtigungen in Entwicklungsumgebungen konfigurieren möchten
  • Datenbankadministratoren : Diejenigen, die die Sicherheit in Produktionsumgebungen stärken möchten

Auch wenn Sie neu bei MariaDB sind, bietet dieser Leitfaden praktische Informationen, die Sie selbstbewusst in realen Betriebsumgebungen anwenden können.

Benutzer in MariaDB erstellen

2.1 Grundlegender Befehl zum Erstellen von Benutzern

In MariaDB erstellen Sie einen neuen Benutzer mit dem Befehl CREATE USER.
Sie können Benutzername und Passwort mit der folgenden Syntax angeben:

CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';

Zum Beispiel, um einen Benutzer namens yamada auf localhost mit dem Passwort password123 zu erstellen:

CREATE USER 'yamada'@'localhost' IDENTIFIED BY 'password123';

Nach der Ausführung dieses Befehls wird der Benutzer yamada erstellt und kann nur von localhost anmelden (Anmeldung nur auf dem Server selbst erlaubt).

2.2 Beispiele für die Erstellung von Benutzern nach Anwendungsfall

Beim Erstellen von Benutzern in MariaDB können Sie mit dem hostname-Feld angeben, von wo aus Verbindungen erlaubt sind.
Es ist wichtig, die Einstellungen je nach Anwendungsfall angemessen zu konfigurieren.

CaseCommand ExampleDescription
Local Environment (Development)CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'password';User dedicated to development environment
Allow Remote ConnectionsCREATE USER 'remote_user'@'%' IDENTIFIED BY 'password';Allow connections from any host (security caution required)
Allow Connection from Specific IPCREATE USER 'admin'@'192.168.1.100' IDENTIFIED BY 'password';Restrict access to a specific IP address only
Allow Connection from Specific SubnetCREATE USER 'network_user'@'192.168.1.%' IDENTIFIED BY 'password';Allow only machines with IP addresses in the 192.168.1.x range

Die Verwendung von '%' erlaubt Verbindungen von allen Hosts, aber
dies birgt erhebliche Sicherheitsrisiken und wird für Produktionsumgebungen nicht empfohlen.
In der Produktion ist es am besten, IP-Adressen anzugeben oder den Zugriff über ein VPN zu konfigurieren.

2.3 Wichtige Hinweise beim Erstellen von Benutzern

Es gibt mehrere wichtige Überlegungen beim Erstellen von Benutzern.

(1) Überprüfen bestehender Benutzer

Bevor Sie einen Benutzer erstellen, ist es wichtig zu überprüfen, ob derselbe Benutzer bereits existiert.
Sie können die derzeit registrierten Benutzer mit dem folgenden Befehl auflisten:

SELECT user, host FROM mysql.user;

Beispielausgabe:

+---------+-----------+
| user    | host      |
+---------+-----------+
| root    | localhost |
| yamada  | localhost |
+---------+-----------+

Wenn ein Benutzer mit demselben username@hostname bereits existiert, führt die Ausführung von CREATE USER zu einem Fehler.

(2) Was tun, wenn der Benutzer bereits existiert

In MariaDB können Sie einen bestehenden Benutzer nicht überschreiben, indem Sie ihn neu erstellen.
Wenn derselbe Benutzer bereits existiert, verwenden Sie einen der folgenden Ansätze:

  • Das Passwort des bestehenden Benutzers ändern
    ALTER USER 'yamada'@'localhost' IDENTIFIED BY 'newpassword123';
    
  • Den unnötigen Benutzer löschen und einen neuen erstellen
    DROP USER 'yamada'@'localhost';
    CREATE USER 'yamada'@'localhost' IDENTIFIED BY 'password123';
    

Berechtigungen in MariaDB verwalten

3.1 Berechtigungen vergeben

Grundlegende Syntax

In MariaDB können Sie einem Benutzer Privilegien mit dem Befehl GRANT zuweisen.

GRANT privilege ON database_name.table_name TO 'username'@'hostname';

Zum Beispiel, um alle Privilegien für test_db dem Benutzer yamada zu gewähren:

GRANT ALL PRIVILEGES ON test_db.* TO 'yamada'@'localhost';

Bedeutung dieses Befehls:

  • ALL PRIVILEGES : Gewährt alle Privilegien
  • test_db.* : Gilt für alle Tabellen in der Datenbank test_db
  • 'yamada'@'localhost' : Gilt für den Benutzer yamada, der sich von localhost einloggt

3.2 Häufig verwendete Privilegien

In MariaDB können Sie Privilegien wie die folgenden gewähren:

PrivilegeDescription
ALL PRIVILEGESGrant all privileges
SELECTRead data
INSERTInsert data
UPDATEUpdate data
DELETEDelete data
CREATECreate new tables or databases
DROPDrop databases or tables
GRANT OPTIONGrant privileges to other users
ALTERModify table structure
EXECUTEExecute stored procedures or functions
RELOADReload server settings

Wenn Sie nur bestimmte Vorgänge zulassen möchten, wird empfohlen, Privilegien einzeln zu gewähren, anstatt alles zu gewähren.

3.3 Privilegieneinstellungen nach Anwendungsfall

Es ist wichtig, für jede Situation die richtigen Privilegien zuzuweisen.

SituationRecommended PrivilegesCommand Example
WordPress OperatorSELECT, INSERT, UPDATE, DELETEGRANT SELECT, INSERT, UPDATE, DELETE ON wp_db.* TO 'wp_user'@'localhost';
Developer (Development Environment)ALL PRIVILEGESGRANT ALL PRIVILEGES ON dev_db.* TO 'dev_user'@'%';
Read-Only UserSELECT onlyGRANT SELECT ON analytics_db.* TO 'readonly'@'localhost';
Database Administrator (Production Environment)ALL PRIVILEGES (restricted)GRANT ALL PRIVILEGES ON production_db.* TO 'admin'@'localhost';

In Produktionsumgebungen sollten Sie das Gewähren von ALL PRIVILEGES nicht zu leichtfertig vornehmen.

3.4 Gewährte Privilegien prüfen

Um die gewährten Privilegien zu prüfen, verwenden Sie den Befehl SHOW GRANTS.

SHOW GRANTS FOR 'username'@'hostname';

Zum Beispiel, um die Privilegien für den Benutzer yamada zu prüfen:

SHOW GRANTS FOR 'yamada'@'localhost';

Beispielausgabe:

+-----------------------------------------------------------------------------------+
| Grants for yamada@localhost                                                       |
+-----------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE ON test_db.* TO 'yamada'@'localhost'                |
+-----------------------------------------------------------------------------------+

Dies zeigt die aktuell dem Benutzer gewährten Privilegien.

3.5 Privilegien widerrufen (Berechtigungen entfernen)

Um einem Benutzer bestimmte Privilegien zu entziehen, verwenden Sie den Befehl REVOKE.

Grundsyntax

REVOKE privilege ON database_name.table_name FROM 'username'@'hostname';

Zum Beispiel, um das UPDATE-Privileg vom Benutzer yamada zu widerrufen:

REVOKE UPDATE ON test_db.* FROM 'yamada'@'localhost';

Alle Privilegien widerrufen

REVOKE ALL PRIVILEGES ON *.* FROM 'yamada'@'localhost';

3.6 Was zu tun ist, wenn Privilegänderungen nicht wirksam werden

In MariaDB werden Privilegänderungen möglicherweise nicht sofort angewendet. Wenn das passiert, führen Sie den folgenden Befehl aus:

FLUSH PRIVILEGES;

Durch das Ausführen dieses Befehls wird MariaDB gezwungen, die Privileg-Tabellen neu zu laden, sodass Ihre Änderungen sofort wirksam werden.

Benutzer in MariaDB löschen

4.1 Einen Benutzer löschen

Um einen MariaDB-Benutzer zu löschen, verwenden Sie den Befehl DROP USER.

Grundsyntax

DROP USER 'username'@'hostname';

Zum Beispiel, um den Benutzer yamada von localhost zu löschen:

DROP USER 'yamada'@'localhost';

Nach Ausführung dieses Befehls wird der Benutzer yamada vollständig aus dem MariaDB-System entfernt.

4.2 Was vor dem Löschen eines Benutzers zu prüfen ist

Bevor Sie einen Benutzer löschen, sollten Sie einige wichtige Prüfungen durchführen. Achten Sie darauf, keine notwendigen Benutzer versehentlich zu löschen.

(1) Prüfen, ob der Zielbenutzer existiert

In MariaDB führt der Versuch, einen nicht existierenden Benutzer zu löschen, zu einem Fehler. Führen Sie den folgenden Befehl aus, um zu bestätigen, dass der Zielbenutzer existiert:

SELECT user, host FROM mysql.user;

Beispielausgabe:

+---------+-----------+
| user    | host      |
+---------+-----------+
| root    | localhost |
| yamada  | localhost |
| admin   | 192.168.1.100 |
+---------+-----------+

Wenn der Benutzer yamada in dieser Liste erscheint, kann der Benutzer gelöscht werden.

(2) Prüfen, ob der Benutzer derzeit verbunden ist

In MariaDB, wenn der zu löschende Benutzer derzeit eine aktive Sitzung hat, kann die Löschung für diese Sitzung nicht sofort wirksam werden. Prüfen Sie, ob der Benutzer aktiv ist, indem Sie den folgenden Befehl ausführen:

SELECT user, host FROM information_schema.processlist;

Beispielausgabe:

+---------+-----------+
| user    | host      |
+---------+-----------+
| yamada  | localhost |
| root    | localhost |
+---------+-----------+

In diesem Beispiel ist der Benutzer yamada derzeit aktiv, daher sollten Sie die Sitzung beenden bevor Sie ihn löschen.

(3) Sitzung zwangsweise beenden

Sie können eine bestimmte Sitzung mit dem Befehl KILL zwangsweise beenden.

  1. Prüfen Sie zunächst die Prozess-ID (die Spalte ID):
    SELECT id, user, host FROM information_schema.processlist;
    

Beispielausgabe:

+----+---------+-----------+
| id | user    | host      |
+----+---------+-----------+
| 10 | yamada  | localhost |
| 11 | root    | localhost |
+----+---------+-----------+
  1. Wenn yamada die Prozess-ID 10 hat, beenden Sie sie mit:
    KILL 10;
    

4.3 Aufräumen nach dem Löschen

Nach dem Löschen eines Benutzers können Restinformationen zu Berechtigungen in der Datenbank verbleiben.
In solchen Fällen führen Sie FLUSH PRIVILEGES aus, um die Berechtigungstabellen zu aktualisieren.

FLUSH PRIVILEGES;

Durch die Ausführung wird sichergestellt, dass die Informationen des gelöschten Benutzers vollständig aus dem Datenbanksystem entfernt werden.

4.4 Wichtige Hinweise beim Löschen von Benutzern

Beachten Sie die folgenden Punkte beim Löschen von Benutzern:

  1. Gelöschte Benutzer können nicht wiederhergestellt werden
  • Sobald Sie DROP USER ausführen, kann der gelöschte Benutzer nicht wiederhergestellt werden.
  • Wenn er versehentlich gelöscht wurde, müssen Sie den Benutzer mit CREATE USER neu anlegen.
  1. Berechtigungen müssen möglicherweise übertragen werden
  • Wenn der gelöschte Benutzer für kritische Datenbankoperationen verantwortlich war, müssen Sie die erforderlichen Berechtigungen vorher an einen anderen geeigneten Benutzer übertragen.
  1. Seien Sie vorsichtig in Produktionsumgebungen
  • In Produktionsumgebungen kann ein plötzliches Löschen Systemausfallzeiten oder Fehler verursachen.
  • Es wird dringend empfohlen, die Auswirkungen im Voraus zu analysieren und ein Backup zu erstellen .

Häufige Fehler und Lösungen (FAQ)

Beim Verwalten von Benutzern in MariaDB können verschiedene Fehler auftreten.
Dieser Abschnitt erklärt die häufigsten Fehler, ihre Ursachen und wie man sie behebt.

5.1 Anfänger-FAQ

Q1: Was ist der Unterschied zwischen der Benutzerverwaltung in MariaDB und MySQL?

MariaDB und MySQL verwenden im Allgemeinen dieselbe Syntax, es gibt jedoch einige Funktionsunterschiede.

Comparison ItemMySQLMariaDB
CREATE USERSupportedSupported
SHOW GRANTS FORSupportedSupported
DROP USERSupportedSupported
CREATE ROLEMySQL 8.0 and laterMariaDB 10.0 and later

MariaDB unterstützt CREATE ROLE, wodurch eine rollenbasierte Benutzerverwaltung ermöglicht wird.

Q2: Was ist der Unterschied zwischen localhost und %?

In der MariaDB-Benutzerverwaltung ist die Angabe des Hostnamens entscheidend.

  • localhost : Erlaubt Verbindungen nur vom lokalen Rechner
  • % : Erlaubt Verbindungen von jedem Host (Sicherheitsrisiko)
  • 192.168.1.100 : Erlaubt Verbindungen nur von einer bestimmten IP-Adresse
  • 192.168.1.% : Erlaubt Verbindungen nur von einem bestimmten Subnetz (192.168.1.*)

5.2 Fehlersuche

Q3: Wie behebt man „ERROR 1396 (HY000): Operation CREATE USER failed“

Ursache: Der angegebene Benutzer existiert bereits, daher kann kein neuer Benutzer erstellt werden.

Lösung: Prüfen Sie, ob der Benutzer existiert, und löschen oder ändern Sie ihn bei Bedarf.

  1. Vorhandene Benutzer prüfen
    SELECT user, host FROM mysql.user WHERE user='yamada';
    
  1. Löschen, falls nicht nötig
    DROP USER 'yamada'@'localhost';
    
  1. Stattdessen Passwort ändern
    ALTER USER 'yamada'@'localhost' IDENTIFIED BY 'newpassword123';
    

Q4: Gewährte Berechtigungen mit GRANT werden nicht angewendet

Ursache: Der MariaDB-Berechtigungscache wurde nicht aktualisiert.

Lösung: Führen Sie FLUSH PRIVILEGES aus, um die Berechtigungen neu zu laden.

FLUSH PRIVILEGES;

Q5: Remote-Verbindung nicht möglich, selbst bei Verwendung von %

Ursache: Remote-Verbindungen können in der MariaDB-Konfigurationsdatei eingeschränkt sein.

Lösung:

  1. Bearbeiten Sie die Konfigurationsdatei /etc/mysql/my.cnf (oder /etc/mysql/mariadb.conf.d/50-server.cnf) und ändern Sie den Wert von bind-address zu 0.0.0.0.
    bind-address = 0.0.0.0
    
  1. Starten Sie MariaDB neu
    sudo systemctl restart mariadb
    
  1. Verwenden Sie % im GRANT-Befehl, um Verbindungen zu erlauben
    GRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%' IDENTIFIED BY 'password';
    

Q6: Erhalten des Fehlers „Access denied for user ‚user’@’host’“ Error

Ursache: Der Benutzer hat nicht die entsprechenden Berechtigungen, oder das Passwort ist falsch.

Lösung:

  1. Aktuelle Berechtigungen prüfen
    SHOW GRANTS FOR 'user'@'host';
    
  1. Entsprechende Berechtigungen gewähren
    GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'host';
    
  1. Überprüfen Sie, ob Sie sich mit dem richtigen Passwort anmelden
    mysql -u user -p
    

Fazit

Die Verwaltung von MariaDB-Benutzern ist entscheidend für die Verbesserung der Datenbanksicherheit und der betrieblichen Effizienz. In diesem Artikel haben wir Benutzererstellung, Berechtigungsverwaltung, Benutzerlöschung und häufige Fehler mit deren Lösungen ausführlich behandelt.

6.1 Zusammenfassung

① Erstellen von Benutzern in MariaDB

  • Erstellen Sie neue Benutzer mit dem Befehl CREATE USER
  • Beschränken Sie den Zugriff mit @'hostname'
  • Überprüfen Sie stets vorhandene Benutzer, bevor Sie neue erstellen

② Verwalten von Berechtigungen in MariaDB

  • Verwenden Sie GRANT, um die minimal notwendigen Berechtigungen zuzuweisen
  • Verwenden Sie SHOW GRANTS, um aktuelle Berechtigungen zu überprüfen
  • Verwenden Sie REVOKE, um unnötige Berechtigungen zu entfernen
  • Wenden Sie Änderungen mit FLUSH PRIVILEGES an

③ Löschen von Benutzern in MariaDB

  • Löschen Sie Benutzer mit dem Befehl DROP USER
  • Prüfen Sie aktive Sitzungen vor dem Löschen
  • Leeren Sie den Berechtigungscache mit FLUSH PRIVILEGES

④ Häufige Fehler und Lösungen

  • ERROR 1396 (HY000)Überprüfen Sie vorhandene Benutzer und löschen Sie sie bei Bedarf
  • Änderungen der Berechtigungen wurden nicht übernommen → Führen Sie FLUSH PRIVILEGES aus
  • Access denied for userÜberprüfen Sie Berechtigungen und Passwort
  • Remote-Verbindung mit % nicht möglich → Passen Sie die bind-address-Konfiguration an

6.2 Best Practices für die Verwaltung von MariaDB-Benutzern

  • Gewähren Sie nur die minimal erforderlichen Berechtigungen
  • Vermeiden Sie das lockere Gewähren von ALL PRIVILEGES
  • Beschränken Sie Produktionsbenutzer nach Möglichkeit auf SELECT, INSERT, UPDATE, DELETE
  • Überprüfen Sie stets Änderungen der Berechtigungen
  • Verwenden Sie SHOW GRANTS, um zu bestätigen, dass die Konfigurationen korrekt sind
  • Analysieren Sie die Auswirkungen, bevor Sie Benutzer löschen
  • Seien Sie in der Produktion vorsichtig und erstellen Sie Backups
  • Durchsetzen starker Sicherheitspraktiken
  • IP-Beschränkungen für Remote-Verbindungen anwenden
  • Setzen Sie ein starkes Passwort für den root-Benutzer
  • Entfernen Sie regelmäßig unnötige Benutzer und Berechtigungen

6.3 Abschließende Gedanken

Durch diesen Leitfaden haben Sie alles von den Grundlagen bis zu fortgeschrittenen Techniken der MariaDB-Benutzerverwaltung gelernt. Nutzen Sie dieses Wissen, um eine sichere und effiziente Datenbankadministration zu erreichen.

Wir werden weiterhin hilfreiche MariaDB-bezogene Einblicke teilen, also bleiben Sie dran! 🚀