mysql create user how create new user mysql
In diesem Tutorial wird der Befehl MySQL Create User mit verschiedenen Autorisierungsmechanismen, Kennwortverwaltung, Ressourcenlimitoptionen usw. erläutert.
Der Befehl MySQL CREATE USER wird verwendet, um neue Benutzer zu erstellen und granularen Zugriff auf Datenbanken / Tabellen usw. zu gewähren.
Mehrere Personen verwenden eine MySQL-Serverinstanz mit unterschiedlichen Zugriffsebenen. Beispielsweise, Einige Benutzer haben Lesezugriff auf eine bestimmte Datenbank, andere können Lese- / Schreibzugriff auf eine bestimmte Datenbank usw. haben.
Was kann .swf-Dateien abspielen
Der Befehl CREATE USER wird von MySQL-Administratoren häufiger verwendet, um Benutzer für die MySQL Server-Instanzen zu erstellen und mithilfe der GRANT-Abfrage unterschiedliche Berechtigungen zu erteilen.
Was du lernen wirst:
Mein SQL CREATE USER-Befehl
Der Befehl CREATE USER wird verwendet, um MySQL-Serverinstanzen neue Konten zu erstellen oder hinzuzufügen.
Dieser Befehl ist allgemein zugänglich und wird von MySQL-Administratoren verwendet, um den Zugriff auf verschiedene Benutzer der MySQL Server-Instanz zu verwalten.
Während Sie einen Benutzer mit dem Befehl CREATE USER erstellen, können Sie angeben
- Authentifizierung, die beim Herstellen einer Verbindung zu MySQL verwendet werden sollte.
- Ressourcenlimit
- Eigenschaften der Kennwortverwaltung: Ablauf des Kennworts, Einstellungen für die Wiederverwendung von Kennwörtern.
- Kontosperrung: Neu erstellte Konten werden entweder gesperrt oder entsperrt.
Die Konten werden in der MySQL-Systemtabelle mit dem Namen erstellt ‘Mysql.user’
Hinweis: Um den Befehl CREATE USER verwenden zu können, muss der Benutzer über die Berechtigung CREATE_USER verfügen oder eine Berechtigung einfügen für MySQL Systemschema.
In der einfachsten Form lautet die Syntax für den Befehl CREATE USER wie folgt:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Beachten Sie das optionale WENN NICHT EXISTIERT . Dadurch wird sichergestellt, dass das SQL-Abfrageergebnis nur eine Warnung und keinen Fehler auslöst, wenn der Benutzer bereits vorhanden ist. Hier, 'Nutzername' bezieht sich auf den tatsächlichen Benutzernamen, mit dem der Benutzer eine Verbindung herstellen würde 'Hostname' bezieht sich auf den Host, von dem aus der Benutzer eine Verbindung herstellen würde.
Bitte beachten Sie, Wenn das Feld 'Hostname' leer gelassen wird, wird angenommen, dass der Wert für den Host '%' ist, wodurch jeder Host eine Verbindung mit dem angegebenen Benutzernamen herstellen kann.
Erstellen Sie einen Benutzer mit dieser Syntax:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
Mit der obigen Anweisung haben wir einen Benutzer mit dem Benutzernamen 'userx' und dem Kennwort 'password' erstellt. Der Hostname ist localhost, da wir die Benutzer auf unserer lokalen MySQL-Instanz erstellen.
Versuchen wir, die Tabelle mysql.users abzufragen, um den Eintrag für den von uns erstellten Benutzer anzuzeigen.
SELECT * from mysql.user
Die Ausgabe wird wie folgt angezeigt:
Die ersten 4 Benutzer werden während der MySQL-Installation selbst vorab erstellt, während der letzte Eintrag der von uns erstellte Benutzer ist - d. H. 'Userx'.
Es ist wichtig zu beachten, dass wir zu diesem Zeitpunkt gerade einen Benutzer erstellt haben, ohne dem Benutzer Rechte zum Erstellen / Aktualisieren / Abfragen einer Datenbank usw. zu erteilen.
Versuchen wir, uns mit diesem Benutzer mit dem MySQL-Client anzumelden.
Sie können das Terminal verwenden, um eine Verbindung mit dem folgenden Befehl herzustellen:
$ /usr/local/mysql/bin/mysql -u userx -p
Wenn Sie zur Eingabe eines Passworts aufgefordert werden, geben Sie das Passwort als 'Passwort' ein.
Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 33 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
Jetzt erstellen wir eine neue Datenbank mit dem Schlüsselwort CREATE DATABASE.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Wie Sie oben sehen können, wird eine Fehlermeldung generiert, die besagt, dass der Benutzer 'userx' keinen Zugriff zum Erstellen von DATABASE hat. Sehen wir uns andere Optionen an, die mit dem Befehl CREATE USER verwendet werden könnten.
BENUTZER ERSTELLEN Mit Auth Plugin
'Auth-Plugin' gibt eine Authentifizierungsoption an und wird in der Plugin-Spalte der Tabelle 'mysql.user' gespeichert. MySQL unterstützt eine Handvoll Authentifizierungs-Plugins.
Einige Plugins, die unterstützt werden, sind wie folgt:
- MySQL natives Passwort-Hashing: Natives Passwort-Hashing ist nichts anderes als die Verwendung von SHA1 zum Speichern von Passwortwerten in der Tabelle mysql.users. Dieser Mechanismus wird als weniger sicher angesehen als das SHA1-Passwort-Hashing.
- SHA2 256 Passwort-Hashing: Dies ist das von MySQL verwendete Standardauthentifizierungs-Plugin. d.h. selbst wenn mit dem Befehl CREATE_USER kein Authentifizierungs-Plugin angegeben wird, wird dieses Plugin standardmäßig angewendet.
- Externe Authentifizierung mit LDAP: LDAP wird im Allgemeinen zum Verknüpfen der MySQL-Authentifizierung mit dem Active Directory des Unternehmens verwendet. Beispielsweise, Authentifizierung mit Google SSO, OAuth oder Microsoft Outlook LDAP. Dies erfordert auch die Installation des LDAP-Plugins auf der MySQL-Seite. Weitere Einzelheiten finden Sie unter Hier.
>> Siehe Hier für eine vollständige Liste der unterstützten Plugins.
Versuchen wir, einen Benutzer mit einem Standard-Auth-Plugin und einem SHA2-Auth-Plugin und den entsprechenden Hash-Werten in der Tabelle mysql.users zu erstellen. Zuerst erstellen wir einen Benutzer mit der Standardauthentifizierung (SHA2) und lassen uns sehen, was in der gespeichert ist mysql.user Tabelle.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Das Authentifizierungs-Plugin für diesen Benutzer 'user-default' wird in der Tabelle 'mysql.users' angezeigt:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Funktionsprüfung und nicht funktionale Prüfung
Hier in authentication_string sehen Sie den SHA-256-Wert für die Kennwortzeichenfolge 'P @ ssw0rd'.
Erstellen wir jetzt einen Benutzer mit einem Authentifizierungs-Plugin. ‘MySQL native password’ und sehen Sie, welchen Wert das Plugin hat, das gespeichert wird.
CREATE USER IF NOT EXISTS 'user-sha1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd'
SELECT host,user,plugin,authentication_string from mysql.user where user='user-sha1'
BENUTZER MIT Rolle ERSTELLEN
MySQL bietet auch die Zuweisung vordefinierter Rollen an neue Benutzer. Diese Rollen haben bereits einen konfigurierten Zugriff auf einige oder alle Datenbanken (die auch angepasst werden können). zum Beispiel, Es könnte eine Rolle mit dem Namen 'Entwickler' erstellt werden, der alle Berechtigungen für eine Datenbank zugewiesen werden können. Später können wir dieselbe Rolle verwenden, um neuen Benutzern zuzuweisen.
Lassen Sie uns dies anhand eines Beispiels sehen:
- Erstellen Sie eine Rolle mit dem Namen Entwickler
CREATE ROLE 'developer'
- Erstellen Sie eine Datenbank mit dem Namen 'Test'.
CREATE DATABASE test
- Weisen Sie der Testdatenbank Berechtigungen für die Rolle 'Entwickler' zu
GRANT ALL ON test.* TO 'developer'
- Benutzer erstellen und Entwicklerrolle zuweisen
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Überprüfen Sie, ob der Benutzer eine Tabelle in der Testdatenbank erstellen kann
Versuchen Sie, sich mit dem Benutzer 'Benutzer mit Rolle' anzumelden, und versuchen Sie, eine neue Tabelle in der Testdatenbank zu erstellen.
$ /usr/local/mysql/bin/mysql -u user-with-role Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 44 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> use test; Database changed mysql> create table test_table(name varchar(20)); Query OK, 0 rows affected (0.07 sec)
BENUTZER ERSTELLEN Mit SSL / TLS
Um einen Benutzer mit SSL / TLS-Optionen zu erstellen, müssen sowohl auf dem Client als auch auf dem Server SSL-Zertifikate installiert sein. Standardmäßig ist SSL nicht für MySQL konfiguriert.
Folge diesen Schritte um SSL für die MySQL-Serverinstanz zu konfigurieren.
Um einen Benutzer mit aktiviertem SSL zu erstellen, können Sie beim Erstellen des Benutzers die Option SSL ANFORDERN verwenden.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
In ähnlicher Weise würde das Erstellen mit X509 erwarten, dass der Client / Benutzer eine Verbindung mit einem gültigen X509-Zertifikat herstellt.
>> Siehe Hier um mehr über X509 zu erfahren.
Verwenden Sie die folgende Abfrage, um einen Benutzer mit einem X509-Zertifikat zu erstellen:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
BENUTZER ERSTELLEN Mit Passwortverwaltungsoptionen
Kennwortoptionen werden verwendet, um Richtlinien für das Kennwort festzulegen, während ein Benutzer mit dem Befehl CREATE USER erstellt wird.
# 1) Läuft das Passwort beim Login ab. Das Passwort ist nach der ersten Verwendung abgelaufen und fordert die Benutzer auf, das Passwort zu ändern.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#zwei) Läuft das Passwort nach einem festgelegten Intervall ab. Der Ablauf des Passworts kann mit dem konfigurierten Intervall konfiguriert werden. zum Beispiel, 90 Tage.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
#3) Das Kennwort wird nach konfigurierten Wiederholungsversuchen gesperrt. Oft ist es erwünscht, dass das Benutzerkonto (für einen konfigurierten Zeitraum) nach 'n' falschen Wiederholungsversuchen gesperrt wird. In der folgenden Abfrage wird das Benutzerkonto nach 5 falschen Versuchen für 2 Tage gesperrt.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Das neue Passwort sollte nicht mit den konfigurierten vorherigen Passwörtern übereinstimmen.
In der folgenden Abfrage sollte das von den Benutzern festgelegte neue Kennwort nicht mit den letzten beiden Kennwörtern übereinstimmen.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
BENUTZER ERSTELLEN Mit Ressourcenlimitoptionen
Ressourcenbeschränkungen sind insbesondere für Produktions-MySQL-Instanzen erforderlich, um zu vermeiden, dass die Datenbank von Abfragen / Anforderungen eines einzelnen Benutzers überfordert wird und die Leistung des MySQL-Servers beeinträchtigt werden kann.
Wir können die Ressourcenlimits festlegen, indem wir drei der folgenden Optionen verwenden:
# 1) MAX_QUERIES_PER_HOUR - Anzahl der für einen bestimmten Benutzer pro Stunde zulässigen Abfragen.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Angenommen, wenn der Benutzer versucht, mehr als 5 Abfragen pro Stunde zu überschreiten, würde der MySQL-Server einen Fehler wie den folgenden auslösen:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Anzahl der für einen bestimmten Benutzer pro Stunde zulässigen Aktualisierungsabfragen.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Die Häufigkeit, mit der ein Konto pro Stunde eine Verbindung zum Server herstellen kann.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Die Anzahl der gleichzeitigen Verbindungen des angegebenen Benutzers zur MySQL-Serverinstanz.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Bitte beachten Sie, dass alle oben genannten Optionen auch beim Erstellen eines Benutzers kombiniert werden können. Angenommen, wir möchten MAX_QUERIES als 10 und MAX_UPDATES als 100 angeben, dann können wir eine einzelne CREATE_USER-Abfrage haben als:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
MySQL Benutzer aktualisieren und löschen
MySQL bietet zwei wichtige Befehle: ALTER USER und DROP USER, um vorhandene Benutzer zu ändern bzw. zu löschen. Lassen Sie uns beide anhand von Beispielen verstehen.
ALTER USER
MySQL ALTER USER wird zum Aktualisieren / Ändern vorhandener MySQL-Benutzerkonten verwendet. Es kann verwendet werden,
- Ressourcenlimits aktualisieren
- Legen Sie die Kennwortoptionen fest
- Sperren und Entsperren von Konten usw.
Sehen wir uns ein Beispiel für die Verwendung von ALTER USER zum Entsperren eines gesperrten Kontos an.
Erstellen Sie einen Benutzer in einem gesperrten Zustand und entsperren Sie ihn dann mit dem Befehl ALTER USER.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Wenn Sie sich jetzt mit diesem Benutzer anmelden, wird eine Meldung angezeigt, dass das Konto gesperrt ist (da der Benutzer in einem gesperrten Kontostatus erstellt wurde).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Verwenden Sie die folgende Abfrage, um den Benutzer mit dem Befehl ALTER zu entsperren.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Melden Sie sich mit dem Benutzer mit dem MySQL-Client an:
$ /usr/local/mysql/bin/mysql -u test -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 50 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
DROP USER
Der Befehl MySQL DROP USER entfernt einen oder mehrere vorhandene Benutzer und alle damit verbundenen Berechtigungen und Berechtigungen.
Bitte beachten Sie, dass keine vom Benutzer erstellten oder aktualisierten Daten, die gelöscht oder aktualisiert werden, entfernt / gelöscht werden.
Wenn jemand versucht, einen nicht vorhandenen Benutzer zu löschen, gibt der Befehl DROP USER einen Fehler aus.
Erstellen Sie einen Benutzer und löschen Sie ihn mit dem Befehl DROP:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
Häufig gestellte Fragen
F # 1) Was ist ein Benutzer in MySQL?
Antworten: Benutzer in MySQL ist ein Konto / eine Entität, die sich bei der MySQL-Serverinstanz anmelden und verschiedene Vorgänge ausführen kann. Einem Benutzer kann ein rollenbasierter Zugriff oder ein granularer Zugriff auf eine oder mehrere Datenbanken und / oder Tabellen zugewiesen werden.
F # 2) Wie überprüfe ich verschiedene Benutzer, die mit MySQL verbunden sind?
Antworten: Um die aktiven Benutzersitzungen auf einer MySQL-Serverinstanz anzuzeigen, können Sie den Befehl processlist wie folgt ausführen.
SHOW processlist;
Die Ausgabe dieses Befehls zeigt verschiedene Attribute der Sitzungen des aktiven Benutzers an, die zum Zeitpunkt der Befehlsausführung verbunden waren.
Beispielausgabe unten:
F # 3) Wie wechsle ich Benutzer in MySQL?
Antworten: MySQL arbeitet am Konzept von Benutzersitzungen. Wenn Sie mit einem bestimmten Benutzer angemeldet sind, können Sie entweder planen, die Sitzung zu beenden oder eine Sitzung für einen neuen Benutzer in einem neuen Fenster oder als neue Verbindung in MySQL-GUI-Clients wie einer Workbench zu öffnen.
Um sich mit einem bestimmten Benutzer vom MySQL-Client aus anzumelden, können Sie die folgende Syntax verwenden:
mysql -u {userName} -p
Nachdem Sie den obigen Befehl geschrieben haben, werden Sie nach dem Drücken der Eingabetaste aufgefordert, das Kennwort für den im Feld {Benutzername} angegebenen Benutzer einzugeben. Sobald das Passwort überprüft wurde, werden Sie zur MySQL-Shell / Eingabeaufforderung weitergeleitet.
Um sich mit einem separaten Benutzer anzumelden, Sie können die aktuelle Sitzung beenden, indem Sie den Befehl exit eingeben und sich erneut bei einem anderen Benutzer anmelden.
mysql> exit
Es ist auch möglich, für verschiedene Benutzer mehrere Verbindungen zu den MySQL-Serverinstanzen herzustellen. Sie können einfach eine neue Registerkarte / ein neues Fenster für die Eingabeaufforderung öffnen und sich mit demselben Befehl bei einem anderen Benutzer anmelden.
mysql -u {userName2} -p
F # 4) Wie kann ein MySQL-Benutzer schreibgeschützt werden?
Antworten: MySQL bietet einen umfassenden Mechanismus, um granularen Zugriff auf Datenbanken oder Tabellen zu gewähren. Sie können verschiedene Arten des Zugriffs wie SELECT, UPDATE, INSERT usw. auf eine oder mehrere Datenbanken oder Tabellen bereitstellen.
Um einem Benutzer nur Lesezugriff zu gewähren, können Sie SELECT-Zugriff auf eine Datenbank gewähren (indem Sie * für alle Tabellen verwenden oder den Tabellennamen gemäß Anforderung explizit angeben).
Lassen Sie uns dies anhand eines Beispiels unten verstehen:
Wir erstellen einen Benutzer mit dem Namen 'readaccess' mit dem Kennwort 'Kennwort'.
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Gewähren Sie jetzt Lesezugriff auf alle Tabellen einer Datenbank mit dem Namen 'test', indem Sie das Schlüsselwort GRANT in MySQL verwenden
grant select on test.* to 'readaccess'@'localhost'
Um den Zugriff zu überprüfen, können Sie sich jetzt mit diesem Benutzer namens 'readaccess' anmelden und versuchen, die Tabellen in der Datenbank 'test' abzufragen.
Was ist Alpha-Test mit Beispiel
Wenn Sie jedoch versuchen, Daten in eine der Tabellen in der Testdatenbank einzufügen, wird der Fehler 'Zugriff verweigert' angezeigt, da wir diesem Benutzer ausdrücklich nur Lesezugriff gewährt haben.
F # 5) Wie sehe ich Benutzer in MySQL?
Antworten: MySQL verfügt über eine Tabelle auf Systemebene mit dem Namen 'mysql.user', die eine Liste aller Benutzer enthält, die für die MySQL-Serverinstanz erstellt wurden. Die Berechtigungen für diese Tabelle sind im Allgemeinen auf Root- oder Administratorbenutzer oder auf Personen beschränkt, die die Authentifizierung und Autorisierung für die MySQL-Serverinstanz verwalten.
F # 6) Wie finde ich den Namen und das Passwort des MySQL-Benutzers?
Antworten: Die MySQL-Benutzer- und Kennwortzuordnung wird in der Systemtabelle 'mysql.user' gespeichert, bei der es sich um eine Tabelle mit Zugriffsbeschränkungen handelt. Das Kennwort wird abhängig vom Verschlüsselungsmodus, der bei der Benutzererstellung ausgewählt wurde, in verschlüsseltem Format gespeichert.
Wenn jedoch das Konto einer Person gesperrt ist, stellt MySQL einen weiteren Befehl namens ALTER USER bereit, mit dem ein bestimmtes Benutzerkonto entsperrt werden kann.
Fazit
In diesem Tutorial haben wir den Befehl MySQL CREATE USER kennengelernt, der im Allgemeinen von Datenbankadministratoren für die Authentifizierung und Zugriffsverwaltung verwendet wird.
MySQL bietet viele leistungsstarke Authentifizierungsmechanismen und rollenbasierte Zuweisungen, mit denen neue Benutzer mit vordefinierten Zugriffsberechtigungen erstellt werden können. Wir haben auch Beispiele zum Erstellen von Benutzern mit unterschiedlichen Autorisierungsmechanismen, unterschiedlichen Kennworteinstellungen, Ablaufoptionen usw. gesehen.
Literatur-Empfehlungen
- So laden Sie MySQL für Windows und Mac herunter
- MySQL Create View Tutorial mit Codebeispielen
- MySQL Tutorial zum Erstellen von Tabellen mit Beispielen
- 31 Fragen und Antworten zu Top-Datenbanktests
- Tutorial zur Datenbanknormalisierung: 1NF 2NF 3NF BCNF-Beispiele
- Vollständige Anleitung zum Testen von Datenbanken (Warum, Was und Wie Daten testen)
- MongoDB Datenbanksicherung erstellen
- MongoDB Benutzer erstellen und Rollen mit Beispielen zuweisen