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

So verwalten Sie Benutzer und Authentifizierung in MySQL


Einführung

Die Benutzerverwaltung gehört zu den wichtigsten Aufgaben eines jeden, der ein MySQL-Datenbanksystem verwalten möchte. Das Erstellen, Ändern und Löschen von Benutzerkonten, um die Benutzer und Dienste in Ihrer Umgebung optimal darzustellen, hilft dabei, die Grundlage für das Sperren des Zugriffs, das Einschränken des Änderungsbereichs und das Implementieren von Auditing und Verantwortlichkeit für Änderungen zu schaffen.

In diesem Handbuch werden wir darüber sprechen, wie Benutzerkonten in MySQL verwaltet werden. Zuerst werden wir besprechen, was ein gültiger Benutzer in MySQL ist, und Ihnen zeigen, wie Sie dem System zusätzliche Benutzer hinzufügen. Dies führt zu einer Diskussion darüber, wie die Authentifizierung für jeden Benutzer konfiguriert wird und wie das System eine Authentifizierungsoption aus einer Liste von Möglichkeiten auswählt. Wir werden weiterhin darüber sprechen, wie Sie Änderungen an bestehenden Benutzern vornehmen, wie Sie sich mit den von Ihnen erstellten Konten anmelden und Benutzer löschen, die Sie nicht mehr benötigen.



Voraussetzungen

Um dieser Anleitung zu folgen, benötigen Sie ein Konto auf einem MySQL-Server mit den entsprechenden Berechtigungen.


Befehle, die wir verwenden werden

Um Benutzer in MySQL zu erstellen, zu ändern und zu löschen, benötigen Sie folgende Kernbefehle:

  • CREATE USER :Erstellen Sie ein neues Benutzerkonto
  • ALTER USER :Änderungen an einem bestehenden Benutzerkonto vornehmen
  • DROP USER :bestehendes Benutzerkonto entfernen


Erforderliche Berechtigungen

Um die obigen Befehle auszuführen, müssen Sie sich bei MySQL mit einem Konto mit CREATE USER anmelden Privilegien. Der CREATE USER Mit der Berechtigung können Sie unter anderem Benutzer erstellen, ändern, löschen und umbenennen. Wir brauchen auch den SELECT Privileg auf mysql Datenbank, um Informationen über vorhandene Benutzer anzuzeigen.

In der bevorzugten Reihenfolge sollten Sie sich mit:

anmelden
  • Ein eingeschränktes Konto mit dem CREATE USER Privileg und das SELECT Privileg auf mysql Datenbank
  • Die root oder administrativer Benutzer, der innerhalb von MySQL über volle Berechtigungen verfügt



Verstehen, wie MySQL Benutzerkonten definiert und interpretiert

Bevor wir mit der Erstellung neuer Konten beginnen, ist es hilfreich, sich etwas Zeit zu nehmen, um sich mit den verschiedenen Funktionen vertraut zu machen, die MySQL zum Erstellen und Verweisen auf Benutzer verwendet. Sie müssen auch mit dem Authentifizierungsalgorithmus von MySQL vertraut sein, um zu verstehen, welches Benutzerkonto verwendet wird, um Verbindungen zu authentifizieren.


Was ist MySQLs Syntax für Benutzerkonten?

In MySQL bestehen Benutzerkonten aus zwei separaten Informationen, die durch ein at-Zeichen (@):

verbunden sind
  • Der Benutzername
  • Der Host, von dem aus der Benutzer eine Verbindung herstellt

Im Allgemeinen sehen Benutzerkonten auf dem System wie folgt aus:

'<user>'@'<host>'

Einfache Anführungszeichen können wie oben verwendet werden, um die Benutzer- und Hostkomponenten des Benutzerkontos einzeln einzuschließen. Sie sind manchmal erforderlich, wenn eine der Komponenten Zeichen enthält, die andernfalls falsch interpretiert würden. Im Allgemeinen ist es immer eine gute Idee, sie explizit hinzuzufügen.

Anstatt also nur ein Konto namens 'john' zu haben , würde in MySQL für den vollständigen Kontonamen eine Art Host erforderlich sein, z. B. 'john'@'localhost' . Das bedeutet, dass es mehrere 'john' geben kann Konten auf dem System und MySQL betrachtet jedes von ihnen als ein einzigartiges Konto, solange sie von einer anderen Domäne stammen.

Nach alledem ist es möglich, Benutzerkonten zu definieren, die keine Benutzer- oder Hostkomponente haben, aber es gibt wichtige Implikationen, die Sie beachten müssen.

Sie können ein Benutzerkonto ohne Benutzerwert definieren, indem Sie eine leere Zeichenfolge verwenden:

''@'<host>'

Beispielsweise könnten Sie einen Benutzer als ''@'localhost' erstellen . Dieser Benutzer würde mit beliebig übereinstimmen Benutzername, der eine Verbindung vom lokalen Computer herstellt.

Ebenso könnten Sie ein Benutzerkonto haben, das von jedem Host passt. Anstatt eine leere Zeichenfolge zu verwenden, würden Sie für Hostwerte den % verwenden Platzhalter, etwa so:

'<user>'@'%'

Zum Beispiel, wenn Sie 'john'@'%' erstellen , würde dieses Konto mit 'john' übereinstimmen Benutzer verbindet sich von beliebig Gastgeber.



Wie authentifiziert MySQL Benutzer?

Es ist sehr wichtig zu verstehen, wie MySQL jede Authentifizierungsanforderung tatsächlich verarbeitet, um eine allgemeine Klasse von Authentifizierungsproblemen zu vermeiden, die aus vernünftigen, aber falschen Annahmen resultieren. Dies wurde ausführlich in unserem Artikel zur Einführung in die Authentifizierung und Autorisierung in MySQL erörtert.

Beim Authentifizieren einer Verbindungsanfrage verwendet MySQL eine Reihe von Feldern innerhalb des user Tabelle seines internen mysql Datenbank, um zu entscheiden, ob die Verbindung zugelassen wird. MySQL wird höchstens verwenden eins Benutzerkontodatensatz, um zu versuchen, eine Verbindung zu authentifizieren. Das bedeutet, dass MySQL eine Möglichkeit braucht, um zu entscheiden, welches Benutzerkonto verwendet werden soll, wenn es mehr als ein Konto gibt, das zu einer Verbindung passen könnte.

Der Algorithmus von MySQL zum Authentifizieren von Benutzern beginnt, wenn der Server hochfährt. Beim Start lädt MySQL die gesamte mysql.user Tabelle in den Speicher. Dies geschieht auch, wenn Benutzerkonten mit den regulären MySQL-Befehlen erstellt werden. Beim Laden der Tabelle sortiert es die Einträge von der höchsten Priorität zur niedrigsten.

MySQL verwendet den Host Spalte als primäres Sortierfeld und priorisiert Ergebnisse mit spezifischeren Werten. Literale Werte werden also mit der höchsten Priorität nach oben sortiert und solche, die Platzhalter verwenden, wie % , werden nach unten sortiert. Die letzten Einträge sind diejenigen, die nur % enthalten ohne andere Zeichen, gefolgt von Einträgen, die einen vollständig leeren Host haben.

Der User wird als sekundäres Sortierfeld für alle Einträge verwendet, die denselben Host haben Wert. Auch hier werden die genaueren Übereinstimmungen priorisiert. Da der User Spalte darf keine Platzhalter verwenden, alle Einträge sind gleichberechtigt, außer denen mit einem leeren User Wert. Diese werden nach unten sortiert. Wenn irgendein Eintrag mit einem leeren User Wert ausgewählt ist, wird der Benutzer als "anonymer Benutzer" authentifiziert, was normalerweise bedeutet, dass er keine Privilegien hat.

Wenn nun eine Verbindungsanfrage gestellt wird, geht MySQL seine sortierte Tabelle im Speicher von oben nach unten durch. Es verwendet die erste Eintrag findet, um den Benutzer zu authentifizieren, unabhängig davon, ob es andere Einträge gibt, die ebenfalls übereinstimmen würden. Wenn sich der Client nicht mit der durch diesen Eintrag definierten Methode authentifizieren kann, schlägt die Verbindung fehl und es werden keine anderen Einträge überprüft.



Was sind die Auswirkungen, wenn ein Benutzer oder Host nicht in eine MySQL-Benutzerkontodefinition aufgenommen wird?

Aufgrund des Authentifizierungsalgorithmus von MySQL können Probleme auftreten, wenn Sie beim Erstellen von Benutzerkonten ohne Benutzer- oder Hostkomponente nicht aufpassen. Dies liegt daran, dass die Art und Weise, wie MySQL entscheidet, welcher Eintrag verwendet wird, um Sie zu authentifizieren, unintuitiv und überraschend sein kann.

Wenn sich beispielsweise ein Benutzer bei MySQL mit dem Benutzerteil als Leerzeichenkette authentifiziert, betrachtet MySQL ihn für den Rest der Sitzung als „anonymen Benutzer“. In der Regel haben anonyme Benutzer fast keine Macht und können nur sehr wenig tun, sobald sie verbunden sind. Es ist sogar möglich, sich versehentlich als anonymer Benutzer zu authentifizieren, wenn Sie versuchen, sich mit einem anderen Benutzerkonto zu authentifizieren.

Die Herausforderung bei der Verwendung von Platzhalter-Hosts für Benutzerkonten ist, dass andere Benutzerkonten einschließen Ein Hostwert kann das Benutzerkonto, das den Platzhalter verwendet, leicht maskieren oder nicht verfügbar machen.

Zum Beispiel, wenn Sie ein Benutzerkonto haben, das als 'emily'@'%' definiert ist , erwarten Sie möglicherweise, dass Sie sich bei 'emily' authentifizieren können von jedem Host. Wenn Sie jedoch ein Benutzerkonto mit einem leeren Benutzer, aber einem Hostwert haben, der mit dem Host 'emily' übereinstimmt verbindet, authentifiziert sich MySQL stattdessen mit diesem Konto (was wie oben beschrieben zu einer anonymen Benutzeranmeldung führt).

Als Beispiel sortiert MySQL die folgenden Konten in der folgenden Reihenfolge:

Priorität MySQL-Konto Kommentare
1 'emily'@'localhost' und 'emily'@'example.com' Diese haben die gleiche Priorität, was in Ordnung ist, da nur einer von ihnen mit einer Verbindung übereinstimmen kann.
2 ''@'localhost' und ''@'example.com' Diese beiden Einträge haben wiederum die gleiche Priorität. Da sie keine Benutzerkomponente haben, aber sie tun eine wörtliche Host-Komponente haben, werden sie am Ende der Einträge platziert, die genaue Host-Werte haben.
3 'emily'@'%.example.com' Dieser Eintrag hat einen Platzhalter in der Host-Komponente, daher hat er eine niedrigere Priorität als Einträge mit genauen Host-Werten.
4 ''@'%.example.com' Dieser Eintrag wird mit den Einträgen gruppiert, die einen Platzhalter in ihrem Hostwert haben. Da es keine Benutzerkomponente hat, befindet es sich am Ende dieser Gruppe.
5 'emily'@'%' Dieser Eintrag hat einen Hostwert, der nur aus einem Platzhalter besteht. Da es mit jedem Host übereinstimmt, hat es eine sehr niedrige Priorität.
7 ''@'%' Dieser Eintrag kann verwendet werden, um jeden Benutzer von jedem Host als anonymen Benutzer zu authentifizieren. Es hat eine extrem niedrige Priorität, da es zu jeder Verbindung passt.
6 'emily'@'' Dieser Eintrag hat einen völlig leeren Hostwert, der eine noch niedrigere Priorität hat als ein Host, der nur einen Wildcard-Host enthält.
8 ''@'' Dies ist der Benutzer mit der niedrigsten möglichen Priorität. Es enthält keine Host-Informationen und wird daher bei der Host-Sortierung am Ende platziert. Da es auch einen leeren Benutzer enthält, wird es unter anderen Einträgen in dieser Gruppe platziert. Wie alle Einträge ohne Benutzer werden Verbindungen, die mit diesem Eintrag authentifiziert werden, als anonymer Benutzer angemeldet.



Wie erstellen Sie Benutzer?

Nachdem Sie nun ein Gefühl dafür haben, wie MySQL mit Benutzerkonten umgeht, können wir damit beginnen, einige neue Benutzer zu erstellen. Denken Sie daran, sich mit einem Benutzer mit den in den Voraussetzungen beschriebenen Berechtigungen anzumelden.


Grundlegende Syntax

Die grundlegende Syntax zum Erstellen eines neuen Benutzers ist relativ einfach. Sie verwenden den CREATE USER Befehl und geben Sie dann den Benutzer und den Host für das neue Konto an:

CREATE USER '<user>'@'<host>';

Dadurch wird ein einfaches Konto erstellt, ohne dass bei der Erstellung weitere Details über den Benutzer und den Host hinaus konfiguriert werden.



Wie erstellt man einen Benutzer mit einem Passwort?

Häufig möchten Sie die Authentifizierung konfigurieren, während Sie den Benutzer erstellen. Sie können dies tun, indem Sie den optionalen IDENTIFIED BY hinzufügen -Klausel auf CREATE USER Aussage:

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

Dadurch wird wie bisher ein neues Benutzerkonto erstellt und gleichzeitig ein Passwort für das Konto vergeben. Wir behandeln, wie Sie nachträglich ein Passwort vergeben oder das Passwort eines Benutzers später ändern können.



Wie erstellt man einen Benutzer mit Unix-Socket-Authentifizierung?

Obwohl die Kennwortauthentifizierung für die meisten Benutzer die gebräuchlichste Authentifizierungsmethode ist, ist sie nicht die einzige Option. MySQL bietet viele verschiedene interne und externe Authentifizierungsmechanismen, die Sie für die Verwendung Ihrer Benutzerkonten konfigurieren können. Als Beispiel konfigurieren wir ein neues Konto mit Unix-Socket-Authentifizierung.

Die Unix-Socket-Authentifizierung kann in Linux- oder Unix-ähnlichen Umgebungen verwendet werden, sodass ein Konto auf dem Betriebssystem ohne weitere Authentifizierung Zugriff auf denselben Kontonamen in MySQL erhält. In dieser Konfiguration weiß der MySQL-Administrator, dass Benutzerkonten auf dem Betriebssystem streng kontrolliert werden.

Wenn es also eine mary gibt Benutzer auf dem Betriebssystem, können sie sich bei 'mary'@'localhost' anmelden -Konto innerhalb von MySQL, wenn die Unix-Socket-Authentifizierung der definierte Authentifizierungsmechanismus ist. Lassen Sie uns das jetzt konfigurieren.

Die Socket-Authentifizierung erfordert den auth_socket Plugin, laden Sie also zuerst das Plugin, indem Sie Folgendes eingeben:

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

Erstellen Sie als Nächstes ein Benutzerkonto, das mit einem Benutzerkonto übereinstimmt, das Sie auf Ihrem Betriebssystem haben. Für dieses Beispiel verwenden wir mary Konto, das wir oben besprochen haben. Wenn Sie keinen Namen verwenden, der mit einem Ihrer Betriebssystemnamen übereinstimmt, können Sie sich nicht mit diesem Benutzer authentifizieren.

Um den Benutzer mit Socket-Authentifizierung zu erstellen, müssen wir den IDENTIFIED WITH verwenden -Klausel (anders als IDENTIFIED BY zuvor verwendete Klausel), um das zu verwendende Authentifizierungs-Plugin anzugeben:

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

Jetzt sollten Sie sich bei 'mary'@'localhost' authentifizieren können MySQL-Benutzer aus mary Benutzer auf Ihrem Betriebssystem. Wenn Sie als mary angemeldet sind , stellen Sie eine Verbindung zur Datenbank her, ohne einen Benutzernamen oder ein Passwort anzugeben:

mysql

Sie sollten automatisch über die von Ihnen konfigurierte Unix-Socket-Authentifizierung angemeldet werden.




Wie zeigen Sie vorhandene Benutzer an?

Sehen wir uns als Nächstes an, wie Sie Informationen zu vorhandenen Benutzern finden.

Um alle vorhandenen MySQL-Benutzer anzuzeigen, bestehend aus Benutzer- und Hostkomponente, sowie das Authentifizierungs-Plug-in, das sie derzeit verwenden, können Sie SELECT diese Felder aus mysql.user Datenbank:

SELECT user,host,plugin FROM mysql.user
+------------------+-----------+-----------------------+  user             | host      | plugin                |+------------------+-----------+-----------------------+  mary             | localhost | auth_socket           |  mysql.infoschema | localhost | caching_sha2_password |  mysql.session    | localhost | caching_sha2_password |  mysql.sys        | localhost | caching_sha2_password |  root             | localhost | caching_sha2_password |  useradmin        | localhost | caching_sha2_password |+------------------+-----------+-----------------------+6 rows in set (0.00 sec)

Hier sehen wir, dass auf dem System sechs Benutzer definiert sind, die sich alle nur lokal anmelden können. Fünf der Konten sind für die Verwendung der Kennwortauthentifizierung konfiguriert. Der 'mary'@'localhost' Das Konto ist für die Verwendung der Unix-Socket-Authentifizierung konfiguriert.

Wir können zusätzliche Informationen über Benutzereigenschaften finden, indem wir SHOW CREATE USER verwenden Befehl. Trotz seines Namens zeigt es alle aktuellen Eigenschaften eines Benutzerkontos an, nicht unbedingt die, die während der ursprünglichen Kontoerstellung verwendet wurden.

Der SHOW CREATE USER Der Befehl nimmt einen Kontonamen als Argument:

SHOW CREATE USER '<user>'@'<host>'\G

Normalerweise ist es am besten, den Befehl mit \G zu beenden Anweisungsabschlusszeichen anstelle des üblichen Doppelpunkts (; ), damit Sie die Ergebnisse etwas klarer sehen können.

Um die Eigenschaften für 'useradmin'@'localhost' anzuzeigen -Konto würden Sie Folgendes eingeben:

SHOW CREATE USER 'useradmin'@'localhost'\G
*************************** 1. row ***************************CREATE USER for useradmin@localhost: CREATE USER 'useradmin'@'localhost' IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$O                                              Rl7lM;@Gt{roB4EWchqDdYM142Lq7pfzcCNiK4yUxnRBlrAgr0sE3' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT1 row in set (0.00 sec)


Wie ändern Sie bestehende MySQL-Benutzer?

Sie können bestehende Benutzer innerhalb von MySQL mit ALTER USER ändern Befehl. Dies kann verwendet werden, um die meisten benutzerbezogenen Eigenschaften eines Kontos zu ändern, mit Ausnahme von Kontoprivilegien, die durch GRANT gesteuert werden und REVOKE Befehle.

Die grundlegende Syntax für ALTER USER sieht so aus:

ALTER USER <user> <properties_to_change>;

Wie ändern Sie das Passwort für einen MySQL-Benutzer?

Für die meisten Menschen die häufigste Verwendung von ALTER USER ist das Ändern von Passwörtern.

Beispielsweise können Sie das Passwort für 'kamal'@'localhost' ändern indem Sie Folgendes eingeben:

ALTER USER 'kamal'@'localhost' IDENTIFIED BY '<new_password>';

Wenn Sie für einen Benutzer ein temporäres Passwort festlegen möchten, das er sofort ersetzen muss, können Sie gleichzeitig ein Passwort festlegen und ablaufen lassen:

ALTER USER 'kamal'@'localhost' IDENTIFIED BY '<new_password>' PASSWORD EXPIRE;

Sie können Ihr eigenes Passwort jederzeit ändern, auch ohne den CREATE USER Privileg. Am einfachsten ist es, den USER() zu verwenden Funktion zum automatischen Ausfüllen Ihres eigenen Benutzernamens:

ALTER USER USER() IDENTIFIED BY '<new_password>';


Wie ändern Sie Authentifizierungs-Plugins für einen MySQL-Benutzer?

Sie können auch den Mechanismus oder das Plugin ändern, das zum Authentifizieren eines Kontos verwendet wird.

In einem früheren Beispiel haben wir ein Konto namens 'mary'@'localhost' konfiguriert um die Unix-Socket-Authentifizierung zu verwenden. Wenn wir dieses Konto später ändern möchten, um eine herkömmliche Passwortauthentifizierung zu verwenden, können wir den ALTER USER verwenden Befehl erneut.

Identifizieren Sie zunächst das standardmäßige Authentifizierungs-Plugin für Ihren Server. Wenn es sich um eine passwortbasierte Authentifizierungsmethode handelt, ist es wahrscheinlich am besten, die Standardauswahl wiederzuverwenden:

SHOW VARIABLES LIKE 'default_authentication_plugin';

In diesem Fall ist das Standard-Authentifizierungs-Plugin caching_sha2_password , also verwenden wir das, wenn wir zur Passwortauthentifizierung wechseln.

Ändern Sie nun 'mary'@'localhost' um das caching_sha2_password zu verwenden Plugin mit neuem Passwort:

ALTER USER 'mary'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<marys_password>';

Der 'mary'@'localhost' Benutzer können sich nicht mehr mit der Unix-Socket-Authentifizierung anmelden, aber sie können sich mit dem bereitgestellten Passwort anmelden.




Wie melden Sie sich bei MySQL an?

Wir haben besprochen, wie man MySQL-Benutzerkonten erstellt und ändert, einschließlich der Authentifizierung. Wir haben jedoch nicht darüber gesprochen, wie man sich mit diesen Authentifizierungsmethoden tatsächlich anmeldet.

Die mysql Client ist ein leistungsstarker Befehlszeilen-Client, der verwendet werden kann, um eine Verbindung zu lokalen und entfernten Datenbanken herzustellen. Wir werden es verwenden, um darüber zu sprechen, wie man sich mit den oben konfigurierten Methoden authentifiziert.


Wie melden Sie sich mit einem Passwort bei einer lokalen Datenbank an?

Um sich bei einer lokal gehosteten MySQL-Datenbank mit einem Benutzerkonto mit Passwort anzumelden, sieht die grundlegende Syntax wie folgt aus:

mysql --user=<username> --password <dbname>

Wenn also der 'kamal'@'localhost' Benutzer möchte sich bei MySQL anmelden und sich mit testing verbinden Datenbank von dem Computer, auf dem das System gehostet wird, können sie Folgendes eingeben:

mysql --user=kamal --password testing

Die mysql Client fragt nach dem Passwort für 'kamal'@'localhost' . Wenn Sie die richtigen Anmeldeinformationen angeben, werden Sie mit testing verbunden Datenbank.

Die Angabe einer Datenbank in der Befehlszeile ist optional. Wenn nichts angegeben ist, verbinden Sie sich mit dem Server, aber nicht mit einer bestimmten Datenbank.



Wie melden Sie sich bei einer lokalen Datenbank mit Unix-Socket-Authentifizierung an?

Um sich bei einem lokalen MySQL-Server mit Unix-Socket-Authentifizierung anzumelden, müssen Sie bei Ihrem Betriebssystem mit dem übereinstimmenden Kontonamen angemeldet sein. Also, wenn wir uns bei 'mary'@'localhost' authentifizieren wollen Unter Verwendung der Unix-Socket-Authentifizierung müssen wir uns zuerst mit einem Benutzernamen namens mary an unserem Computer anmelden .

Sobald Sie das richtige Betriebssystemkonto verwenden, können Sie sich ohne Optionen direkt mit der lokalen Datenbank verbinden, indem Sie den Client ausführen.

mysql

Wie zuvor können Sie optional einen Datenbanknamen anhängen, um sich mit einer bestimmten gewünschten Datenbank zu verbinden.



Wie melden Sie sich mit einem Passwort bei einer entfernten Datenbank an?

Wenn Ihr MySQL-Server nicht auf Ihrem lokalen Server läuft, müssen Sie den Host angeben, zu dem der Client versuchen soll, eine Verbindung herzustellen. Sie können dies tun, indem Sie den --host hinzufügen Option.

Meistens authentifizieren Sie sich mit einem Passwort bei Remote-MySQL-Servern, also würde der Befehl etwa so aussehen:

mysql --user=<username> --password --host=<host> <dbname>

Also 'tanya'@'<tanyas_domain>' könnte sich mit einem MySQL-Server verbinden, der sich auf example.com befindet indem Sie Folgendes eingeben:

mysql --user='tanya' --password --host='example.com' 



Wie löscht man MySQL-Benutzer?

Das Aufbewahren von Benutzerkonten, die keinen Zweck mehr erfüllen, ist ein Sicherheitsrisiko. Mit dem DROP USER können Sie Konten ganz einfach entfernen Befehl.

Die grundlegende Syntax sieht folgendermaßen aus:

DROP USER '<user>'@'<host>';

Also, um den 'mary'@'localhost' zu löschen Benutzer würden Sie Folgendes eingeben:

DROP USER 'mary'@'localhost';

Wenn Sie versuchen, einen nicht vorhandenen Benutzer zu löschen, erhalten Sie eine Fehlermeldung:

ERROR 1396 (HY000): Operation DROP USER failed for 'mary'@'localhost'

Um dies zu vermeiden, können Sie den IF EXISTS hinzufügen Klausel vor dem Kontonamen. Wenn der Benutzer existiert, wird er gelöscht. Wenn dies nicht der Fall ist, wird nur eine Warnung ausgegeben:

Query OK, 0 rows affected, 1 warning (0.00 sec)


Fazit

Die Benutzerkontenverwaltung und Authentifizierungskonfiguration von MySQL ist äußerst flexibel. Wenn Sie lernen, wie Sie Benutzerinformationen in MySQL erstellen, ändern und abrufen, können Sie Ihre Datenbanksysteme effektiver verwalten.

Best Practices für die Sicherheit schreiben vor, dass Sie Konten für jeden einzelnen Anwendungsfall erstellen sollten, wobei Sie nur die Zugriffsebene erhalten, die zur Durchführung ihres Umfangs erforderlich ist. Kontoerstellung und Authentifizierung sind die ersten Phasen dieses Prozesses. In einem anderen Leitfaden werden wir über das Gewähren und Widerrufen von Privilegien sprechen, um den anderen Teil dieser Strategie zu erfüllen.