Heim  >  Artikel  >  Datenbank  >  So erstellen Sie ein Benutzerkonto in MySQL

So erstellen Sie ein Benutzerkonto in MySQL

高洛峰
高洛峰Original
2016-12-02 14:56:271062Durchsuche

1.CREATE USER
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
CREATE USER wird verwendet Erstellen Sie ein neues MySQL-Konto. Um CREATE USER verwenden zu können, müssen Sie über die globale CREATE USER-Berechtigung für die MySQL-Datenbank oder über die INSERT-Berechtigung verfügen. Für jedes Konto erstellt CREATE USER ohne Berechtigungen einen neuen Datensatz in der Tabelle mysql.user. Wenn das Konto bereits vorhanden ist, tritt ein Fehler auf.
Mithilfe der optionalen IDENTIFIED BY-Klausel kann ein Passwort für das Konto vergeben werden. Der Benutzerwert und das Passwort werden auf die gleiche Weise wie bei der GRANT-Anweisung angegeben. Um insbesondere ein Passwort im Klartext anzugeben, ignorieren Sie das Schlüsselwort PASSWORD. Um ein Passwort als Hash-Wert anzugeben, der von der Funktion PASSWORD() zurückgegeben wird, schließen Sie das Schlüsselwort PASSWORD ein.
2. Verwenden Sie die GRANT-Anweisung
Am besten verwenden Sie die GRANT-Anweisung, da diese präziser ist und weniger Fehler aufweist. GRANT wird ab MySQL 3.22.11 bereitgestellt; sein Hauptzweck besteht darin, Konten zu autorisieren, kann aber auch zum Erstellen neuer Konten und deren gleichzeitiger Autorisierung verwendet werden. Hinweis: Wenn MySQL in no_auto_create_user ausgeführt wird, muss das Passwort für den neuen Benutzer angegeben werden, andernfalls kann der Benutzer nicht erstellt werden.
Das folgende Beispiel zeigt, wie Sie mit dem MySQL-Client-Programm einen neuen Benutzer einrichten.
Verwenden Sie zunächst das MySQL-Programm, um als MySQL-Root-Benutzer eine Verbindung zum Server herzustellen:
shell> MySQL --user=root MySQL
Wenn Sie ein Passwort für das Root-Konto angeben, müssen Sie es auch verwenden der MySQL-Befehl und die Anweisungen in diesem Abschnitt. Andere Befehle bieten die Option --password oder -p.
Nachdem Sie sich als Root mit dem Server verbunden haben, können Sie ein neues Konto hinzufügen. Mit der folgenden Anweisung werden vier neue Konten eingerichtet: mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
GRANT RELOAD,PROCESS ON *.* TO 'admin'@ 'localhost';
mysql>GRANT USAGE ON *.* TO 'dummy'@'localhost';
Mit der GRANT-Anweisung erstellte Konten haben die folgenden Attribute: Der Name ist monty und das Passwort ist some_pass. Bei beiden Konten handelt es sich um Superuser-Konten mit allen Berechtigungen. Ein Konto ('monty'@'localhost') wird nur verwendet, wenn eine Verbindung von einem lokalen Computer hergestellt wird. Ein anderes Konto ('monty'@'%') kann für die Verbindung von anderen Hosts verwendet werden. Bitte beachten Sie, dass beide monty-Konten von jedem Host aus eine Verbindung zu monty herstellen können müssen. Ohne ein Localhost-Konto hat das von mysql_install_db erstellte anonyme Benutzerkonto von Localhost Vorrang, wenn monty von diesem Computer aus eine Verbindung herstellt. Infolgedessen wird monty als anonymer Benutzer behandelt. Der Grund dafür ist, dass der Host-Spaltenwert des anonymen Benutzerkontos spezifischer ist als der des Kontos „monty“@„%“, sodass er in der Sortierreihenfolge der Benutzertabelle höher eingestuft wird. (Informationen zur Sortierung von Benutzertabellen finden Sie im MySQL-Handbuch.)
· Ein Konto hat den Benutzernamen admin und kein Passwort. Dieses Konto wird nur für die Verbindung von diesem Computer aus verwendet. Es werden die Administratorrechte RELOAD und PROCESS gewährt. Mit diesen Berechtigungen kann der Admin-Benutzer die Befehle mysqladmin reload, mysqladmin restart und mysqladmin flush-xxx sowie die mysqladmin-Prozessliste ausführen. Die Berechtigung zum Zugriff auf die Datenbank wird nicht erteilt. Sie können solche Berechtigungen über die GRANT-Anweisung hinzufügen.
· Ein Konto hat den Benutzernamen-Dummy und kein Passwort. Dieses Konto wird nur für die Verbindung von diesem Computer aus verwendet. Erlaubnis nicht erteilt. Mit der USAGE-Berechtigung in der GRANT-Anweisung können Sie ein Konto erstellen, ohne Berechtigungen zu erteilen. Es kann alle globalen Berechtigungen auf „N“ setzen. Es wird davon ausgegangen, dass Sie diesem Konto später bestimmte Berechtigungen erteilen.
3. Betreiben Sie die MySQL-Autorisierungstabelle direkt
Zusätzlich zu GRANT können Sie direkt die INSERT-Anweisung verwenden, um dasselbe Konto zu erstellen, und dann den Server mit FLUSH PRIVILEGES anweisen, die Autorisierungstabelle neu zu laden.
shell> mysql --user=root mysql
mysql> INSERT INTO user
-> Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y' ,'Y');
mysql> INSERT INTO user
-> VALUES('%','monty',PASSWORD('some_pass'),
-> 'Y','Y' ,'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin',
-> Reload_priv='Y', Process_priv='Y';
INSERT INTO user (Host, Benutzer, Passwort)
-> VALUES('localhost','dummy','');
mysql>
Der Grund für die Verwendung von FLUSH PRIVILEGES beim Erstellen eines Kontos mit INSERT besteht darin, den Server anzuweisen, die Autorisierung erneut zu lesen Tisch. Andernfalls werden die Änderungen erst nach einem Neustart des Servers bemerkt. Bei Verwendung von GRANT ist die Verwendung von FLUSH PRIVILEGES nicht erforderlich.
Verwenden Sie die Funktion PASSWORD() mit INSERT, um das Passwort zu verschlüsseln. Die GRANT-Anweisung verschlüsselt das Passwort für Sie, daher ist PASSWORD() nicht erforderlich.
Der Wert „Y“ aktiviert Kontoberechtigungen. Für Administratorkonten können Sie auch die besser lesbare erweiterte INSERT-Syntax (mit SET) verwenden.
In der INSERT-Anweisung für das Dummy-Konto werden nur die Spalten Host, Benutzer und Passwort in der Benutzertabelle als angegebene Werte aufgezeichnet. Keine der Berechtigungsspalten ist explizit festgelegt, daher weist MySQL ihnen allen den Standardwert „N“ zu. Dies entspricht der Operation von GRANT USAGE.
Bitte beachten Sie, dass Sie zum Einrichten eines Superuser-Kontos lediglich einen Benutzertabelleneintrag erstellen müssen, dessen Berechtigungsspalte auf „Y“ gesetzt ist. Die Berechtigungen der Benutzertabelle sind globale Berechtigungen, sodass keine Einträge in anderen Berechtigungstabellen erforderlich sind.
4. Nennen Sie einige Beispiele für die Beantragung von Zuschüssen zum Erstellen von Konten und Autorisierungen.
Das folgende Beispiel erstellt 3 Konten und ermöglicht ihnen den Zugriff auf eine dedizierte Datenbank. Der Benutzername jedes Kontos ist benutzerdefiniert und das Passwort ist unklar.
Um ein Konto mit GRANT zu erstellen, verwenden Sie die folgende Anweisung:
shell> MySQL --user=root MySQL
shell> ,DELETE,CREATE,DROP
-> ON bankaccount.*
-> TO 'custom'@'localhost'
-> EINFÜGEN, AKTUALISIEREN, LÖSCHEN, ERSTELLEN, DROP
-> AUF Ausgaben.*
-> TO 'custom'@'whitehouse.gov'
-> mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP.*
-> IDENTIFIED BY 'obscure ';
Diese 3 Konten können verwendet werden für:
· Das erste Konto kann auf die Bankkontodatenbank zugreifen, der Zugriff ist jedoch nur von diesem Computer aus möglich.
· Das zweite Konto kann auf die Ausgabendatenbank zugreifen, jedoch nur vom Host whitehouse.gov.
· Das dritte Konto kann auf die Kundendatenbank zugreifen, jedoch nur vom Host server.domain.
Um ein benutzerdefiniertes Konto ohne GRANT einzurichten, verwenden Sie die INSERT-Anweisung, um die Autorisierungstabelle direkt zu ändern:
shell>
- > VALUES('localhost','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('whitehouse. gov','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
-> 'obscure') );
mysql> INSERT INTO db
-> (Host,Db,User,Select_priv,Insert_priv,
-> Update_priv,Delete_priv,Create_priv,Drop_priv)
-> ;(' localhost','bankaccount','custom',
-> 'Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
-> (Host,Db,User,Select_priv,Insert_priv,
-> Update_priv,Delete_priv,Create_priv,Drop_priv)
-> VALUES('whitehouse.gov','expenses ',' benutzerdefiniert',
-> 'Y','Y','Y','Y','Y','Y');
INSERT INTO db
-> ; (Host ,Db,User,Select_priv,Insert_priv,
-> Update_priv,Delete_priv,Create_priv,Drop_priv)
-> VALUES('server.domain','customer','custom',
-> ; 'Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;

Die ersten drei INSERT-Anweisungen fügen Einträge zur Benutzertabelle hinzu, sodass Benutzer eine benutzerdefinierte Verbindung von verschiedenen Hosts mit einem bestimmten Passwort herstellen können, aber keine globalen Berechtigungen gewähren (alle Berechtigungen sind auf Standardwerte gesetzt). 'N'). Die nächsten drei INSERT-Anweisungen fügen Einträge zur Benutzertabelle hinzu und gewähren benutzerdefiniert Berechtigungen für Bankkonten, Ausgaben und Kundendatenbanken, auf die jedoch nur vom entsprechenden Host aus zugegriffen werden kann. Wenn Sie die Autorisierungstabelle direkt ändern, sollten Sie den Server normalerweise anweisen, FLUSH PRIVILEGES zu verwenden, um die Autorisierungstabelle neu zu laden, damit die Berechtigungsänderungen wirksam werden.
Wenn Sie einem Benutzer Zugriff von allen Computern in einer bestimmten Domäne (z. B. mydomain.com) gewähren möchten, können Sie eine GRANT-Anweisung mit dem Platzhalterzeichen „%“ im Host-Teil des Kontonamens verwenden:
mysql> GRANT ...
-> ON *.*
-> TO 'myname'@'%.mydomain.com'
-> > So ändern Sie die Autorisierungstabelle direkt, um Folgendes zu erreichen:
mysql> PASSWORD('mypass '),...);
mysql>
5. Eine andere Möglichkeit, ein Konto zu erstellen, ist die Verwendung eines Drittanbieterprogramms mit der MySQL-Kontoverwaltungsfunktion. phpMyAdmin ist ein Programm.

Benutzerkonto aus MySQL löschen
Um ein Konto zu entfernen, verwenden Sie die DROP USER-Anweisung.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn