Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Benutzerverwaltung

MySQL gehört zu den beliebtesten Datenbankmanagern der Welt. Es enthält viele Funktionen, die es zuverlässig, effizient und robust machen. Seine maximale Zuverlässigkeit wird erreicht, wenn er richtig eingesetzt wird. Das Erstellen von Benutzern mit eingeschränkten Berechtigungen für die Datenbank ist eine der einfachsten und zuverlässigsten Möglichkeiten, die MySQL-Sicherheit zu erhöhen.

MySQL-Benutzer erstellen

Bei der Installation von MySQL ist der Root-Benutzer (MySQL-Administrator) der erste Benutzer, der erstellt wird. Der Root-Benutzer darf alles und jeden in der MySQL-Datenbank tun. Es ist praktisch für andere Personen, mit diesem Konto auf Ihre Datenbank zuzugreifen.

Böswillige Benutzer könnten versuchen, sich als Root-Benutzer anzumelden, um die gehosteten Informationen zu stehlen oder den Dienst zusammen mit den Daten zu zerstören. Daher muss der Systemadministrator Benutzer mit bestimmten Berechtigungen für die Datenbank erstellen. Dadurch wird sichergestellt, dass eine Gefährdung der Sicherheit dieses Benutzers nur minimale oder überschaubare Auswirkungen hat.

Mit der MySQL Create User-Anweisung können Sie ein neues Benutzerkonto auf dem Datenbankserver erstellen. Es bietet Authentifizierungs-, Ressourcenbegrenzungs-, Rollen- und Kennwortverwaltungseigenschaften für die neuen Konten. Die Anweisung ermöglicht uns auch, die Konten zu kontrollieren, die gesperrt oder entsperrt werden sollen.

Um einen Benutzer zu erstellen, müssen Sie über ein globales Privileg (Root-Benutzer) der „CREATE USER“-Anweisung oder das INSERT-Privileg für das MySQL-Systemschema verfügen. Ein Fehler wird angezeigt, wenn Sie versuchen, einen bereits vorhandenen Benutzer zu erstellen, aber wenn Sie die Klausel „IF NOT EXISTS“ verwenden, gibt die Anweisung anstelle einer Fehlermeldung eine Warnung für jeden benannten Benutzer aus, der bereits vorhanden ist.

Um einen Nicht-Root-Benutzer zu erstellen und ihm bestimmte Berechtigungen für den Zugriff auf und die Änderung der Datenbank zu erteilen, verwenden wir die folgende Syntax:

CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';

Der Kontoname besteht aus zwei Teilen; der Benutzername und der Hostname, getrennt durch das @-Symbol. Der Benutzername ist der Name des Benutzers, während der Hostname der Name des Hosts ist, von dem aus sich der Benutzer mit dem Datenbankserver verbinden kann.

username@hostname

Der Hostname ist optional. Wenn der Hostname nicht angegeben wird, kann sich der Benutzer von jedem Host auf dem Server verbinden. Ein Benutzerkontoname ohne Hostnamen kann als Benutzername@%

geschrieben werden
CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';

Beachten Sie, dass die create user-Anweisung einen neuen Benutzer mit vollem Zugriff erstellt. Um dem Benutzer Berechtigungen zu erteilen, verwenden Sie die GRANT-Anweisung

Führen Sie die folgenden Schritte aus, um einen neuen Benutzer in der MySQL-Datenbank zu erstellen:

1. Öffnen Sie mit dem MySQL-Client-Tool den MySQL-Server

2. Geben Sie das Passwort ein und drücken Sie dann die Eingabetaste.

3. Erstellen Sie einen neuen Benutzer mit dem folgenden Befehl

create user 'foss'@'localhost' identified by 'foss12345'; 

4. Verwenden Sie den folgenden Befehl, um Benutzer auf dem MySQL-Server anzuzeigen

select user from mysql.user;

Aus der angezeigten Ausgabe wurde der Benutzer „foss“ erfolgreich erstellt.

5. Verwenden Sie nun die IF NOT EXISTS-Klausel mit der CREATE USER-Anweisung, indem Sie den folgenden Befehl ausführen:

Erteilen von Privilegien für den neuen MySQL-Benutzer

Einige der häufigsten Privilegien, die der MySQL-Server einem neuen Benutzer gewährt, sind:

1. ALLE PRIVILEGIEN: gewährt einem neuen Benutzerkonto alle Privilegien

2. ERSTELLEN: ermöglicht dem Benutzerkonto das Erstellen von Datenbanken und Tabellen

3. FALLEN: ermöglicht dem Benutzerkonto, Datenbanken und Tabellen zu löschen

4. LÖSCHEN: ermöglicht dem Benutzerkonto, Zeilen aus einer bestimmten Tabelle zu löschen

5. EINFÜGEN: ermöglicht dem Benutzerkonto, Zeilen in eine bestimmte Tabelle einzufügen

6.AUSWÄHLEN: ermöglicht dem Benutzerkonto, eine Datenbank zu lesen

7.AKTUALISIERUNG: ermöglicht einem Benutzerkonto, Tabellenzeilen zu aktualisieren

Führen Sie den folgenden Befehl aus, um einem Benutzer alle Berechtigungen zu erteilen

GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';

Führen Sie den folgenden Befehl aus, um einem neu erstellten Benutzer bestimmte Berechtigungen zu erteilen,

GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';

Führen Sie den folgenden Befehl aus, um alle Berechtigungen zu leeren, die einem Benutzer zugewiesen sind.

FLUSH PRIVILEGES;

Führen Sie den folgenden Befehl aus, um die einem Benutzer zugewiesenen Berechtigungen anzuzeigen.

SHOW GRANTS FOR 'foss'@'localhost';
ANZEIGEN

MySQL Drop-Benutzer

Mit der MySQL Drop User-Anweisung können Sie ein oder mehrere Benutzerkonten und ihre Berechtigungen vom Datenbankserver entfernen. Wenn das Benutzerkonto auf dem Datenbankserver nicht existiert, wird ein Fehler zurückgegeben.

Um die Drop User-Anweisung verwenden zu können, benötigen Sie ein globales Privileg oder das DELETE-Privileg für das MySQL-Systemschema.

Die Syntax zum vollständigen Löschen von Benutzerkonten vom Datenbankserver lautet wie folgt:

DROP USER 'foss'@'localhost';

Hinweis: Der Kontoname im obigen Beispiel wird als Benutzername@Hostname identifiziert. Der Benutzername ist der Name des Kontos, das Sie vom Datenbankserver löschen möchten, und der Hostname ist der Servername des Benutzerkontos. zum Beispiel „foss@localhost“. foss ist der Benutzername, während localhost ist der Hostname.

Die folgenden Schritte sind zu befolgen, wenn ein vorhandener Benutzer aus der MySQL-Serverdatenbank gelöscht wird;

1. Öffnen Sie mit dem MySQL-Client-Tool den MySQL-Server

2. Geben Sie das Kontokennwort ein und drücken Sie dann die Eingabetaste

3. Um ein Benutzerkonto zu löschen, führen Sie den folgenden Befehl aus

DROP USER 'fosslinux'@'localhost';

4. Führen Sie den folgenden Befehl aus, um Benutzer anzuzeigen

select user from mysql.user; 

Sie erhalten eine Ausgabe, in der der Benutzername fosslinux nicht vorhanden ist, wie unten gezeigt:

5. Der Benutzer löschen kann auch verwendet werden, um mehr als ein Benutzerkonto auf einmal zu entfernen. Trennen Sie dazu die Kontonamen mit Kommas.

Hinweis: Da wir die Benutzer bereits gelöscht hatten, erstellen wir zwei Benutzer mit den Konzepten zum Erstellen von Benutzern (fosslinuxtuts und fosslinux@%). Danach führen wir den Befehl in Schritt 4 aus, um die vorhandenen Benutzer wie unten gezeigt anzuzeigen:

Löschen Sie nun die beiden Benutzer gleichzeitig mit dem folgenden Befehl:Führen Sie den folgenden Befehl aus, um beide Benutzer zu löschen:

DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;

Beachten Sie, dass die DROP-Anweisung keine geöffneten Benutzersitzungen automatisch schließen kann. Wenn die DROP-Anweisung ausgeführt wird, während eine Benutzerkontositzung aktiv ist, wirkt sich der Befehl nicht darauf aus, bis die Sitzung geschlossen wird. Das Benutzerkonto wird erst gelöscht, wenn die Sitzung geschlossen wird, und der Benutzer kann sich beim nächsten Versuch nicht erneut anmelden.

MySQL Benutzer anzeigen/alle Benutzer auflisten

Um eine Datenbank in MySQL zu verwalten, müssen Sie die Liste aller Benutzerkonten in einer Datenbank sehen. Die Leute gehen davon aus, dass es einen SHOW USERS-Befehl ähnlich SHOW DATABASE oder SHOW TABLES gibt, um die Liste aller auf dem Datenbankserver verfügbaren Benutzer anzuzeigen. Leider verfügt der MySQL-Server nicht über einen SHOW USERS-Befehl, um eine Liste aller Benutzer auf dem MySQL-Server anzuzeigen. Stattdessen verwenden wir die folgende Abfrage, um die Liste aller Benutzer auf dem Datenbankserver anzuzeigen:

select user from mysql.user;

Nach Ausführung des Befehls erhalten Sie die Benutzerdaten aus der Benutzertabelle des MySQL-Datenbankservers.

Hinweis: In diesem Beispiel verwenden wir die MySQL-Datenbank. Wählen Sie die Datenbank aus, indem Sie den folgenden Befehl ausführen, und verwenden Sie dann die select from-Anweisung, um die vorhandenen Benutzer zu überprüfen, wie in der folgenden Abbildung gezeigt:

use mysql;
SELECT user FROM user;

Wenn Sie weitere Informationen zur Benutzertabelle sehen möchten, führen Sie den folgenden Befehl aus:

DESC user;

Der Befehl gibt die folgende Ausgabe aus, die alle verfügbaren Spalten der mysql.user-Datenbank auflistet:

Führen Sie die folgende Abfrage aus, um ausgewählte Informationen wie Hostname, Kennwortablaufstatus und Kontosperrung abzurufen:

 SELECT user, host, account_locked, password_expired FROM user;

Nach erfolgreicher Ausführung der Abfrage erscheint folgende Ausgabe:

Aktuellen Benutzer anzeigen

Sie können Informationen über den aktuellen Benutzer abrufen, indem Sie die Funktion user() oder current_user() verwenden, wie unten gezeigt:

Select user(); 

ODER

Select current_user();

Die folgende Ausgabe erscheint nach erfolgreicher Ausführung eines der obigen Befehle.

Aktuell angemeldeten Benutzer anzeigen

Sie können einen Benutzer sehen, der derzeit beim Datenbankserver angemeldet ist, indem Sie den folgenden Befehl auf dem MySQL-Server verwenden:

SELECT user, host, db, command FROM information_schema.processlist;

Die obigen Befehle geben einen ähnlichen Bildschirm wie den unten gezeigten aus:

So ändern Sie das MySQL-Benutzerpasswort

MySQL-Benutzerdatensätze enthalten die Anmeldeinformationen, Kontoberechtigungen und Hostinformationen für das MySQL-Konto, um auf die Datenbank zuzugreifen und sie zu verwalten. Die Anmeldeinformationen umfassen den Benutzernamen und das Passwort. Daher kann es erforderlich sein, das Benutzerkennwort in der MySQL-Datenbank zu ändern.

Um das Passwort eines Benutzerkontos zu ändern, denken Sie daran, die folgenden Informationen zu berücksichtigen:

  • Details des zu ändernden Benutzerkontos
  • Die Anwendung wird von dem Benutzerkonto verwendet, dessen Passwort geändert werden soll. Wenn das Passwort des Benutzerkontos zurückgesetzt wurde, ohne eine Anwendungsverbindungszeichenfolge zu ändern, kann die Anwendung keine Verbindung mit dem Datenbankserver herstellen.

MySQL ermöglicht es Ihnen, das Passwort des Benutzerkontos auf drei verschiedene Arten zu ändern:

  1. UPDATE-Anweisung
  2. SET PASSWORD-Anweisung
  3. ALTER USER-Anweisung

Passwort des Benutzerkontos mit der UPDATE-Anweisung ändern

Nach Ausführung der UPDATE-Anweisung verwenden wir die FLUSH PRIVILEGE-Anweisung, um Berechtigungen aus der Grant-Tabelle der MySQL-Datenbank neu zu laden.
Angenommen, Sie möchten das Passwort für ein Benutzerkonto foss ändern, das sich vom lokalen Host mit dem Passwort foss12345 verbindet, Führen Sie den folgenden Befehl aus:

USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss'; 
FLUSH PRIVILEGES;

Die obige Anweisung funktioniert nicht mit MySQL-Version 5.7.6 oder höher, da die MySQL-Benutzertabelle die Authentifizierungs-String-Spalte enthält, die nur das Passwort speichert. Höhere Versionen haben die Authentifizierungs-String-Spalte in der UPDATE-Anweisung, wie in der folgenden Anweisung gezeigt:

USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';

FLUSH PRIVILEGES;

Hinweis: Diese Methode funktioniert nur mit älteren MySQL-Versionen. Wenn Sie neuere oder neueste MySQL-Versionen haben, fahren Sie daher mit den anderen Methoden fort.

Passwort des Benutzerkontos mit SET PASSWORD-Anweisung ändern

Wenn Sie ein anderes Kontokennwort ändern möchten, müssen Sie über das UPDATE-Privileg verfügen. Die Anweisung verwendet das Benutzerkonto im folgenden Format:username@localhost

Das Neuladen von Privilegien aus den Rant-Tabellen der MySQL-Datenbank unter Verwendung der FLUSH PRIVILEGES muss nicht verwendet werden. Um das Passwort des Benutzerkontos (foss) mit der Anweisung SET PASSWORD zu ändern, verwenden Sie die folgende Anweisung:

SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');

Wenn Sie MySQL-Version 5.7.6 oder höher verwenden, ist die obige Anweisung veraltet und wird in zukünftigen Versionen nicht funktionieren. Verwenden Sie stattdessen die folgende Anweisung;

SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';

Passwort des Benutzerkontos mit ALTER USER-Anweisung ändern

MySQL verwendet die ALTER USER-Anweisung mit der IDENTIFIED BY-Klausel. Dazu verwenden Sie die folgende Syntax:

ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';

Möglicherweise müssen Sie das Kennwort für das MySQL-Root-Konto zurücksetzen. Dazu können Sie das Beenden erzwingen und dann den MySQL-Datenbankserver neu starten, ohne die Grant-Tabellenvalidierung zu verwenden.

Schlussfolgerung

Dieser Artikel hat alle Aspekte der MySQL-Benutzerverwaltung umfassend behandelt. Wir glauben, dass es detailliert genug ist, um Ihnen Lösungen für Ihre Probleme zu bieten. Wenn Sie auf Fehler oder Schwierigkeiten stoßen, während Sie Benutzern zeigen, wie sie MySQL verwenden, wenden Sie sich bitte über den Kommentarbereich an uns, um Hilfe zu erhalten. Danke fürs Lesen.