Der Inhalt dieses Artikels besteht darin, vorzustellen, wie MySQL die Berechtigungsverwaltung durchführt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
Die Berechtigungstabelle von MySQL wird beim Start der Datenbank in den Speicher geladen. Wenn der Benutzer die Identitätsauthentifizierung besteht, wird auf die entsprechenden Berechtigungen im Speicher zugegriffen. Auf diese Weise kann der Benutzer Berechtigungsbereiche in der Datenbank festlegen . Verschiedene Operationen innerhalb. [Empfohlene Video-Tutorials: MySQL-Tutorial]
In den beiden Prozessen des Berechtigungszugriffs verwendet das System „MySQL“. Die drei am häufigsten Wichtige Berechtigungstabellen in der Datenbank (erstellt bei der Installation von MySQL, der Datenbankname lautet „mysql“) sind Benutzer, Host und Datenbank.
Unter diesen 3 Tabellen ist die Benutzertabelle die wichtigste, gefolgt von der Datenbanktabelle. Die Hosttabelle wird in den meisten Fällen nicht verwendet.
Die Spalten im Benutzer sind hauptsächlich in 4 Teile unterteilt: Benutzerspalten, Berechtigungsspalten, Sicherheitsspalten und Ressourcenkontrollspalten.
Normalerweise sind die am häufigsten verwendeten Spalten Benutzerspalten und Berechtigungsspalten, wobei Berechtigungsspalten in normale Berechtigungen und Verwaltungsberechtigungen unterteilt sind. Gewöhnliche Berechtigungen werden für Datenbankoperationen verwendet, z. B. select_priv
, super_priv
usw.
Wenn ein Benutzer eine Verbindung herstellt, umfasst der Zugriffsprozess der Berechtigungstabelle die folgenden zwei Prozesse:
Beginnen Sie zunächst mit dem Host, dem Benutzer und dem Kennwort in der Benutzertabelle . Felder werden verwendet, um zu bestimmen, ob die verbundene IP, der Benutzername und das Passwort in der Tabelle vorhanden sind. Wenn sie vorhanden sind, wird die Authentifizierung bestanden, andernfalls wird die Verbindung abgelehnt.
Wenn die Identitätsauthentifizierung bestanden wird, werden die Datenbankberechtigungen in der Reihenfolge der folgenden Berechtigungstabelle abgerufen: user -> tables_priv ->
In diesen Berechtigungstabellen nimmt der Umfang der Berechtigungen der Reihe nach ab und globale Berechtigungen decken lokale Berechtigungen ab. Die erste Stufe oben ist leicht zu verstehen. Lassen Sie uns die zweite Stufe anhand eines Beispiels im Detail erläutern.
Um das Testen zu erleichtern, müssen Sie die Variable sql_mode ändern
// sql_mode 默认值中有 NO_AUTO_CREATE_USER (防止GRANT自动创建新用户,除非还指定了密码) SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
MySQL [mysql]> grant select on *.* to zj@localhost; Query OK, 0 rows affected, 2 warnings (0.00 sec) MySQL [mysql]> select * from user where user="zj" and host='localhost' \G; *************************** 1. row *************************** Host: localhost User: zj Select_priv: Y Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Reload_priv: N ...
MySQL [mysql]> select * from db where user='zj' \G ; Empty set (0.00 sec)
und Sie können feststellen, dass die Spalte „select_priv“ der Benutzertabelle „Y“ ist, es jedoch keinen Datensatz in der Datenbanktabelle gibt Die gleichen Berechtigungen für alle Datenbanken erfordern keinen Eintrag in die Datenbanktabelle und müssen lediglich select_priv in der Benutzertabelle auf „Y“ ändern. Mit anderen Worten: Jede Berechtigung in der Benutzertabelle stellt Berechtigungen für alle Datenbanken dar.
MySQL [mysql]> revoke select on *.* from zj@localhost; Query OK, 0 rows affected, 1 warning (0.02 sec) MySQL [mysql]> grant select on t2.* to zj@localhost; Query OK, 0 rows affected, 1 warning (0.04 sec) MySQL [mysql]> select * from user where user='zj' \G; *************************** 1. row *************************** Host: localhost User: zj Select_priv: N Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Reload_priv: N ... MySQL [mysql]> select * from db where user='zj' \G; *************************** 1. row *************************** Host: localhost Db: t2 User: zj Select_priv: Y Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Grant_priv: N
Zu diesem Zeitpunkt wurde festgestellt, dass sich select_priv in der Benutzertabelle in „N“ geändert hat und ein Datensatz mit db t2 zur db-Tabelle hinzugefügt wurde. Das heißt, wenn bestimmte Berechtigungen nur einem Teil der Datenbank gewährt werden, bleibt die entsprechende Berechtigungsspalte in der Benutzertabelle „N“ und die spezifischen Datenbankberechtigungen werden in die Datenbanktabelle geschrieben. Der Berechtigungsmechanismus von Tabellen und Spalten ähnelt dem von DB.
Wie aus dem obigen Beispiel ersichtlich ist, werden die Berechtigungen in der Reihenfolge Benutzer -> tables_priv -> zugewiesen Das heißt, die globalen Berechtigungen werden zuerst für den Tabellenbenutzer überprüft. Wenn die entsprechende Berechtigung im Benutzer „Y“ ist, ist die Berechtigung dieses Benutzers für alle Datenbanken „Y“ und db, tables_priv und columns_priv werden nicht mehr überprüft, wenn dies der Fall ist „N“, die Berechtigung dieses Benutzers wird in der Datenbanktabelle überprüft, die dem Benutzer entspricht, und erhält die Berechtigung „Y“ in der Datenbank, wenn die entsprechende Berechtigung in der Datenbank „N“ ist Berechtigungen in tables_priv und columns_priv nacheinander. Wenn alle „N“ sind, wird dies als „Keine Berechtigung“ beurteilt.
Beinhaltet hauptsächlich Kontoerstellung, Berechtigungsänderungen und Kontolöschung.
Erstellen Sie es mit der Grant-Syntax, Beispiel:
MySQL [mysql]> grant all privileges on *.* to zj@localhost; Query OK, 0 rows affected, 2 warnings (0.00 sec) MySQL [mysql]> select * from user where user="zj" and host="localhost" \G; *************************** 1. row *************************** Host: localhost User: zj Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Reload_priv: Y Shutdown_priv: Y
Es kann festgestellt werden, dass mit Ausnahme der grant_priv-Berechtigung alle Berechtigungen in der Benutzertabelle „Y“ sind.
MySQL [(none)]> grant all privileges on *.* to zj@localhost with grant option; Query OK, 0 rows affected, 1 warning (0.01 sec) MySQL [mysql]> select * from user where user="zj" and host='localhost' \G ; *************************** 1. row *************************** Host: localhost User: zj Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Reload_priv: Y Shutdown_priv: Y Process_priv: Y File_priv: Y Grant_priv: Y ...
MySQL [mysql]> grant all privileges on *.* to zj@localhost identified by '123' with grant option; Query OK, 0 rows affected, 2 warnings (0.01 sec) MySQL [mysql]> select * from user where user="zj" and host="localhost" \G ; *************************** 1. row *************************** Host: localhost User: zj Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Reload_priv: Y ...... authentication_string: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 password_expired: N password_last_changed: 2017-09-25 20:29:42 password_lifetime: NULL
Sie können feststellen, dass das Passwort zu einer Reihe verschlüsselter Zeichenfolgen wird.
MySQL [mysql]> grant select ,insert, update,delete on t2.* to 'zj2'@'%' identified by '123'; Query OK, 0 rows affected, 1 warning (0.00 sec) MySQL [mysql]> select * from user where user='zj2' and host="%" \G; *************************** 1. row *************************** Host: % User: zj2 Select_priv: N Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N ...... authentication_string: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 password_expired: N password_last_changed: 2017-09-25 20:37:49 password_lifetime: NULL MySQL [mysql]> select * from db where user="zj2" and host='%' \G; *************************** 1. row *************************** Host: % Db: t2 User: zj2 Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: N Drop_priv: N ......
Die Berechtigungen in der Benutzertabelle sind alle „N“ und die Berechtigungen der in der Datenbanktabelle hinzugefügten Datensätze sind alle „Y“. Gewähren Sie Benutzern im Allgemeinen nur die entsprechenden Berechtigungen, ohne übermäßige Berechtigungen zu erteilen.
Die IP in diesem Beispiel ist auf alle IPs beschränkt, die eine Verbindung herstellen können, daher ist sie auf „*“ eingestellt. In der MySQL-Datenbank wird sie über das Hostfeld der Benutzertabelle gesteuert die folgenden Arten von Aufgaben.
Der Hostwert kann ein Hostname oder eine IP-Nummer sein, oder „localhost“ gibt den lokalen Host an.
Sie können die Platzhalterzeichen „%“ und „_“ im Wert der Hostspalte verwenden
Der Hostwert „%“ entspricht jedem Host Name, leere Hostwerte entsprechen „%“ und ihre Bedeutung ist dieselbe wie bei der Mustervergleichsoperation des Like-Operators.
注意: mysql 数据库的 user 表中 host 的值为 “*” 或者空,表示所有外部 IP 都可以连接,但是不包括本地服务器 localhost,因此,如果要包括本地服务器,必须单独为 localhost 赋予权限。
MySQL [mysql]> grant super,process,file on *.* to 'zj3'@'%'; Query OK, 0 rows affected, 1 warning (0.00 sec)
因为这几个权限都是属于管理权限,因此不能够指定某个数据库,on 后面必须跟 “.”,下面语法将提示错误
MySQL [mysql]> grant super,process,file on t2.* to 'zj3'@'%'; ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
MySQL [mysql]> grant usage on *.* to 'zj4'@'localhost'; Query OK, 0 rows affected, 2 warnings (0.01 sec) MySQL [mysql]> exit Bye zj@bogon:~$ mysql -uzj4 -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 78 Server version: 5.7.18-log Source distribution Copyright (c) 2000, 2017, 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 [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.02 sec)
usage 权限只能用于数据库登录,不能执行任何操作
账号创建好后,可以通过如下命令查看权限:
show grants for user@host;
示例:
MySQL [(none)]> show grants for zj@localhost; +-------------------------------------------------------------------+ | Grants for zj@localhost | +-------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'zj'@'localhost' WITH GRANT OPTION | +-------------------------------------------------------------------+ 1 row in set (0.01 sec)
可以进行权限的新增和回收。和创建账号一样,权限变更也有两种方法:使用 grant(新增) 和 revoke (回收) 语句,或者更改权限表。
MySQL [(none)]> show grants for zj4@localhost; +-----------------------------------------+ | Grants for zj4@localhost | +-----------------------------------------+ | GRANT USAGE ON *.* TO 'zj4'@'localhost' | +-----------------------------------------+ 1 row in set (0.00 sec)
MySQL [(none)]> grant select on *.* to 'zj4'@'localhost'; Query OK, 0 rows affected, 1 warning (0.00 sec) MySQL [(none)]> show grants for zj4@localhost; +------------------------------------------+ | Grants for zj4@localhost | +------------------------------------------+ | GRANT SELECT ON *.* TO 'zj4'@'localhost' | +------------------------------------------+ 1 row in set (0.00 sec)
MySQL [(none)]> show grants for 'zj4'@'localhost'; +--------------------------------------------------+ | Grants for zj4@localhost | +--------------------------------------------------+ | GRANT SELECT, INSERT ON *.* TO 'zj4'@'localhost' | +--------------------------------------------------+ 1 row in set (0.00 sec)
revoke 语句可以回收已经赋予的权限,对于上面的例子,这里决定要收回 zj4@localhost 上的 insert 和 select 权限:
MySQL [(none)]> revoke select,insert on *.* from zj4@localhost; Query OK, 0 rows affected, 1 warning (0.00 sec) MySQL [(none)]> show grants for zj4@localhost; +-----------------------------------------+ | Grants for zj4@localhost | +-----------------------------------------+ | GRANT USAGE ON *.* TO 'zj4'@'localhost' | +-----------------------------------------+ 1 row in set (0.00 sec)
usage 权限不能被回收,也就是说,revoke 用户并不能删除用户。
shell> mysqladmin -u user_name -h host_name password "123456"
mysql> set password for 'username'@'%' = password('pwd');
如果是更改自己的密码,可以省略 for 语句
mysql> set password=password('pwd');
mysql> grant usage on *.* to 'username'@'%' identified by 'pwd';
要彻底的删除账号,可以使用 drop user :
drop user zj@localhost;
创建 MySQL 账号时,还有一类选项称为账号资源限制
,这类选项的作用是限制每个账号实际具有的资源限制,这里的“资源”主要包括:
max_queries_per_hour count : 单个账号每小时执行的查询次数
max_upodates_per_hour count : 单个账号每小时执行的更新次数
max_connections_per_hour count : 单个账号每小时连接服务器的次数
max_user_connections count : 单个账号并发连接服务器的次数
Die Berechtigungstabelle von MySQL wird beim Start der Datenbank in den Speicher geladen. Wenn der Benutzer die Identitätsauthentifizierung besteht, wird auf die entsprechenden Berechtigungen im Speicher zugegriffen. Diese Benutzer können im Rahmen ihrer Befugnisse in der Datenbank verschiedene Vorgänge ausführen. 1. Zugriff auf Berechtigungstabellen In den beiden Prozessen des Berechtigungszugriffs verwendet das System die Datenbank „mysql“ (erstellt, wenn MySQL installiert ist, und der Datenbankname lautet „mysql“). ), sind die drei wichtigsten Berechtigungstabellen Benutzer, Host und Datenbank. Unter diesen 3 Tabellen ist die Benutzertabelle die wichtigste, gefolgt von der Datenbanktabelle. Die Hosttabelle wird in den meisten Fällen nicht verwendet. Die Spalten im Benutzer sind hauptsächlich in 4 Teile unterteilt: Benutzerspalten, Berechtigungsspalten, Sicherheitsspalten und Ressourcenkontrollspalten. Normalerweise sind die am häufigsten verwendeten Spalten Benutzerspalten und Berechtigungsspalten, wobei Berechtigungsspalten in normale Berechtigungen und Verwaltungsberechtigungen unterteilt sind. Gewöhnliche Berechtigungen werden für Datenbankoperationen verwendet, z. B. ,
usw.
Wenn ein Benutzer eine Verbindung herstellt, umfasst der Zugriffsprozess der Berechtigungstabelle die folgenden zwei Prozesse:
Wenn die Identitätsauthentifizierung bestanden wird, werden die Datenbankberechtigungen in der Reihenfolge der folgenden Berechtigungstabelle abgerufen: user -> tables_priv ->
In diesen Berechtigungstabellen nimmt der Umfang der Berechtigungen der Reihe nach ab und globale Berechtigungen decken lokale Berechtigungen ab. Die erste Stufe oben ist leicht zu verstehen. Lassen Sie uns die zweite Stufe anhand eines Beispiels im Detail erläutern. select_priv
super_priv
Um das Testen zu erleichtern, müssen Sie die Variable sql_mode ändern
// sql_mode 默认值中有 NO_AUTO_CREATE_USER (防止GRANT自动创建新用户,除非还指定了密码) SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
MySQL [mysql]> grant select on *.* to zj@localhost; Query OK, 0 rows affected, 2 warnings (0.00 sec) MySQL [mysql]> select * from user where user="zj" and host='localhost' \G; *************************** 1. row *************************** Host: localhost User: zj Select_priv: Y Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Reload_priv: N ...
MySQL [mysql]> select * from db where user='zj' \G ; Empty set (0.00 sec)
MySQL [mysql]> revoke select on *.* from zj@localhost; Query OK, 0 rows affected, 1 warning (0.02 sec) MySQL [mysql]> grant select on t2.* to zj@localhost; Query OK, 0 rows affected, 1 warning (0.04 sec) MySQL [mysql]> select * from user where user='zj' \G; *************************** 1. row *************************** Host: localhost User: zj Select_priv: N Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Reload_priv: N ... MySQL [mysql]> select * from db where user='zj' \G; *************************** 1. row *************************** Host: localhost Db: t2 User: zj Select_priv: Y Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Grant_priv: N
2. Kontoverwaltung Beinhaltet hauptsächlich Kontoerstellung, Berechtigungsänderungen und Kontolöschung.
(1) Erstellen Sie den Benutzer zj mit Berechtigungen, die alle Berechtigungen für alle Datenbanken ausführen können und nur sein können Der lokale Zugriff erfolgt über Connect.
MySQL [mysql]> grant all privileges on *.* to zj@localhost; Query OK, 0 rows affected, 2 warnings (0.00 sec) MySQL [mysql]> select * from user where user="zj" and host="localhost" \G; *************************** 1. row *************************** Host: localhost User: zj Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Reload_priv: Y Shutdown_priv: Y
(2) Fügen Sie basierend auf (1) die Erteilungsberechtigung für zj hinzu
MySQL [(none)]> grant all privileges on *.* to zj@localhost with grant option; Query OK, 0 rows affected, 1 warning (0.01 sec) MySQL [mysql]> select * from user where user="zj" and host='localhost' \G ; *************************** 1. row *************************** Host: localhost User: zj Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Reload_priv: Y Shutdown_priv: Y Process_priv: Y File_priv: Y Grant_priv: Y ...
(3) Legen Sie basierend auf (2) das Passwort auf „123“ fest
MySQL [mysql]> grant all privileges on *.* to zj@localhost identified by '123' with grant option; Query OK, 0 rows affected, 2 warnings (0.01 sec) MySQL [mysql]> select * from user where user="zj" and host="localhost" \G ; *************************** 1. row *************************** Host: localhost User: zj Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Reload_priv: Y ...... authentication_string: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 password_expired: N password_last_changed: 2017-09-25 20:29:42 password_lifetime: NULL
MySQL [mysql]> grant select ,insert, update,delete on t2.* to 'zj2'@'%' identified by '123'; Query OK, 0 rows affected, 1 warning (0.00 sec) MySQL [mysql]> select * from user where user='zj2' and host="%" \G; *************************** 1. row *************************** Host: % User: zj2 Select_priv: N Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N ...... authentication_string: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 password_expired: N password_last_changed: 2017-09-25 20:37:49 password_lifetime: NULL MySQL [mysql]> select * from db where user="zj2" and host='%' \G; *************************** 1. row *************************** Host: % Db: t2 User: zj2 Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: N Drop_priv: N ......
user 表中的权限都是“N”,db 表中增加的记录权限则都是“Y”。一般的,只授予用户适当的权限,而不会授予过多的权限。
本例中的 IP 限制为所有 IP 都可以连接,因此设置为 “*”,mysql 数据库中是通过 user 表的 host 字段来进行控制,host 可以是以下类型的赋值。
Host 值可以是主机名或IP号,或 “localhost” 指出本地主机。
可以在 Host 列值使用通配符字符 “%” 和 “_”
Host 值 “%” 匹配任何主机名,空 Host 值等价于 “%”,它们的含义与 like 操作符的模式匹配操作相同。
注意: mysql 数据库的 user 表中 host 的值为 “*” 或者空,表示所有外部 IP 都可以连接,但是不包括本地服务器 localhost,因此,如果要包括本地服务器,必须单独为 localhost 赋予权限。
MySQL [mysql]> grant super,process,file on *.* to 'zj3'@'%'; Query OK, 0 rows affected, 1 warning (0.00 sec)
因为这几个权限都是属于管理权限,因此不能够指定某个数据库,on 后面必须跟 “.”,下面语法将提示错误
MySQL [mysql]> grant super,process,file on t2.* to 'zj3'@'%'; ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
MySQL [mysql]> grant usage on *.* to 'zj4'@'localhost'; Query OK, 0 rows affected, 2 warnings (0.01 sec) MySQL [mysql]> exit Bye zj@bogon:~$ mysql -uzj4 -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 78 Server version: 5.7.18-log Source distribution Copyright (c) 2000, 2017, 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 [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.02 sec)
usage 权限只能用于数据库登录,不能执行任何操作
账号创建好后,可以通过如下命令查看权限:
show grants for user@host;
示例:
MySQL [(none)]> show grants for zj@localhost; +-------------------------------------------------------------------+ | Grants for zj@localhost | +-------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'zj'@'localhost' WITH GRANT OPTION | +-------------------------------------------------------------------+ 1 row in set (0.01 sec)
可以进行权限的新增和回收。和创建账号一样,权限变更也有两种方法:使用 grant(新增) 和 revoke (回收) 语句,或者更改权限表。
MySQL [(none)]> show grants for zj4@localhost; +-----------------------------------------+ | Grants for zj4@localhost | +-----------------------------------------+ | GRANT USAGE ON *.* TO 'zj4'@'localhost' | +-----------------------------------------+ 1 row in set (0.00 sec)
MySQL [(none)]> grant select on *.* to 'zj4'@'localhost'; Query OK, 0 rows affected, 1 warning (0.00 sec) MySQL [(none)]> show grants for zj4@localhost; +------------------------------------------+ | Grants for zj4@localhost | +------------------------------------------+ | GRANT SELECT ON *.* TO 'zj4'@'localhost' | +------------------------------------------+ 1 row in set (0.00 sec)
MySQL [(none)]> show grants for 'zj4'@'localhost'; +--------------------------------------------------+ | Grants for zj4@localhost | +--------------------------------------------------+ | GRANT SELECT, INSERT ON *.* TO 'zj4'@'localhost' | +--------------------------------------------------+ 1 row in set (0.00 sec)
revoke 语句可以回收已经赋予的权限,对于上面的例子,这里决定要收回 zj4@localhost 上的 insert 和 select 权限:
MySQL [(none)]> revoke select,insert on *.* from zj4@localhost; Query OK, 0 rows affected, 1 warning (0.00 sec) MySQL [(none)]> show grants for zj4@localhost; +-----------------------------------------+ | Grants for zj4@localhost | +-----------------------------------------+ | GRANT USAGE ON *.* TO 'zj4'@'localhost' | +-----------------------------------------+ 1 row in set (0.00 sec)
usage 权限不能被回收,也就是说,revoke 用户并不能删除用户。
shell> mysqladmin -u user_name -h host_name password "123456"
mysql> set password for 'username'@'%' = password('pwd');
如果是更改自己的密码,可以省略 for 语句
mysql> set password=password('pwd');
mysql> grant usage on *.* to 'username'@'%' identified by 'pwd';
要彻底的删除账号,可以使用 drop user :
drop user zj@localhost;
创建 MySQL 账号时,还有一类选项称为账号资源限制
,这类选项的作用是限制每个账号实际具有的资源限制,这里的“资源”主要包括:
max_queries_per_hour count : 单个账号每小时执行的查询次数
max_upodates_per_hour count : 单个账号每小时执行的更新次数
max_connections_per_hour count : 单个账号每小时连接服务器的次数
max_user_connections count : 单个账号并发连接服务器的次数
评论
Das obige ist der detaillierte Inhalt vonWie führt MySQL die Berechtigungsverwaltung durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!