暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的SQL语句 - 数据库管理语句 - 账户管理语句 - GRANT 语句 (2)

林员外聊编程 2021-02-18
441
MySQL 支持的权限
 
下表汇总了可为 GRANT 和 REVOKE 语句指定的允许的静态和动态 priv_type 权限类型,以及可授予每个权限的级别。
 
GRANT REVOKE 语句允许的静态权限:
 
权限
含义和授权级别
ALL [PRIVILEGES]
授予除 GRANT OPTION 和 PROXY 之外的在指定的访问级别的所有权限
ALTER
启用 ALTER TABLE。级别:全局、数据库、表
ALTER ROUTINE
允许更改或删除存储例程。级别:全局、数据库、例程。
CREATE
启用数据库和表创建。级别:全局、数据库、表。
CREATE ROLE
启用角色创建。级别:全局。
CREATE ROUTINE
启用存储例程创建。级别:全局、数据库。
CREATE TABLESPACE
允许创建、更改或删除表空间和日志文件组。级别:全局。
CREATE TEMPORARY TABLES
启用 CREATE TEMPORARY TABLE。级别:全局、数据库。
CREATE USER
启用 CREATE USER、DROP USER、RENAME USER 和 REVOKE ALL PRIVILEGES。级别:全局。
CREATE VIEW
允许创建或更改视图。级别:全局、数据库、表。
DELETE
启用 DELETE。级别:全局、数据库、表。
DROP
允许删除数据库、表和视图。级别:全局、数据库、表。
DROP ROLE
允许删除角色。级别:全局。
EVENT
为事件调度器启用事件。级别:全局、数据库。
EXECUTE
允许用户执行存储例程。级别:全局、数据库、例程。
FILE
允许用户使服务器读取或写入文件。级别:全局。
GRANT OPTION
允许向其他帐户授予权限或从中删除权限。级别:全局、数据库、表、例程、代理。
INDEX
允许创建或删除索引。级别:全局、数据库、表。
INSERT
启用 INSERT。级别:全局、数据库、表、列。
LOCK TABLES
对具有 SELECT 权限的表启用 LOCK TABLES。级别:全局、数据库。
PROCESS
用户使用 SHOW PROCESSLIST 查看所有进程。级别:全局。
PROXY
启用用户代理。级别:从用户到用户。
REFERENCES
启用外键创建。级别:全局、数据库、表、列。
RELOAD
启用 FLUSH 操作。级别:全局。
REPLICATION CLIENT
允许用户询问源服务器或副本服务器的位置。级别:全局。
REPLICATION SLAVE
使副本能够从源读取二进制日志事件。级别:全局。
SELECT
启用 SELECT。级别:全局、数据库、表、列。
SHOW DATABASES
启用 SHOW DATABASES 以显示所有数据库。级别:全局。
SHOW VIEW
启用 SHOW CREATE VIEW。级别:全局、数据库、表。
SHUTDOWN
启用 mysqladmin shutdown。级别: 全局
SUPER
允许使用其他管理操作,如 CHANGE REPLICATION SOURCE TO、CHANGE MASTER TO、KILL、PURGE BINARY LOGS、SET GLOBAL 和 mysqladmin debug 命令。级别:全局。
TRIGGER
启用触发器操作。级别:全局、数据库、表。
UPDATE
启用 UPDATE。级别:全局、数据库、表、列。
USAGE
“无权限”的同义词
 
GRANT REVOKE 语句允许的动态权限:
 
权限
含义和授权级别
APPLICATION_PASSWORD_ADMIN
启用双密码管理。级别:全局。
AUDIT_ADMIN
启用审核日志配置。级别:全局。
BACKUP_ADMIN
启用备份管理。级别:全局。
BINLOG_ADMIN
启用二进制日志控制。级别:全局。
BINLOG_ENCRYPTION_ADMIN
启用二进制日志加密的激活和停用。级别:全局。
CLONE_ADMIN
启用克隆管理。级别:全局。
CONNECTION_ADMIN
启用连接限制。级别:全局。
ENCRYPTION_KEY_ADMIN
启用 InnoDB 秘钥变换:全局。
FIREWALL_ADMIN
Enable firewall rule administration, any user. Level: Global.
FIREWALL_USER
Enable firewall rule administration, self. Level: Global.
FLUSH_OPTIMIZER_COSTS
启用优化器消费重新加载。级别:全局。
FLUSH_STATUS
启用状态指示器刷新。级别:全局。
FLUSH_TABLES
启用表刷新。级别:全局。
FLUSH_USER_RESOURCES
启用用户资源刷新。级别:全局。
GROUP_REPLICATION_ADMIN
启用组复制控制。级别:全局。
INNODB_REDO_LOG_ENABLE
启用或禁用重做日志记录。级别:全局。
INNODB_REDO_LOG_ARCHIVE
启用重做日志存档管理。级别:全局。
NDB_STORED_USER
启用SQL节点(NDB群集)之间的用户或角色共享。级别:全局。
PERSIST_RO_VARIABLES_ADMIN
启用持久化只读系统变量。级别:全局。
REPLICATION_APPLIER
作为复制通道的 PRIVILEGE_CHECKS_USER。级别:全局。
REPLICATION_SLAVE_ADMIN
启用常规复制控制。级别:全局。
RESOURCE_GROUP_ADMIN
启用资源组管理。级别:全局。
RESOURCE_GROUP_USER
启用资源组管理。级别:全局。
ROLE_ADMIN
允许授予或撤消角色,使用 WITH ADMIN OPTION。级别:全局。
SESSION_VARIABLES_ADMIN
启用设置受限会话系统变量。级别:全局。
SET_USER_ID
启用设置非自身 DEFINER 值。级别:全局。
SHOW_ROUTINE
允许访问存储例程定义。级别:全局。
SYSTEM_USER
将账户指定为系统账户。级别:全局。
SYSTEM_VARIABLES_ADMIN
启用修改或持久化全局系统变量。级别:全局。
TABLE_ENCRYPTION_ADMIN
启用覆盖默认加密设置。级别:全局。
VERSION_TOKEN_ADMIN
启用版本令牌 UDF 的使用。级别:全局。
XA_RECOVER_ADMIN
启用 XA RECOVER 执行。级别:全局。
 
触发器与表相关联。要创建或删除触发器,必须具有表的,而不是触发器的 TRIGGER 权限。
 
在 GRANT 语句中,ALL [PRIVILEGES] PROXY 权限必须自己命名,不能与其他权限一起指定。ALL [PRIVILEGES] 表示除 GRANT OPTION PROXY 权限外,要授予权限的级别的所有可用权限。
 
MySQL 账户信息存储在 mysql 系统模式的表中。
 
如果授权表包含有大小写混合的数据库或表名的权限行,并且 lower_case_table_names 系统变量设置为非零值,则 REVOKE 不能用于撤销这些权限。在这种情况下,有必要直接操作授权表。(在设置 lower_case_table_names GRANT 不会创建行记录,但这些行可能是在设置该变量之前创建的。lower_case_table_names 设置只能在服务器启动时配置。)
 
根据 ON 子句使用的语法,可以在多个级别授予权限。对于 REVOKE,同样使用 ON 语法指定要删除的权限。
 
对于全局、数据库、表和例程级别,GRANT ALL 只分配正在授予的级别上存在的权限。例如,GRANT ALL ON db_name.* 是一个数据库级语句,因此它不授予任何仅限于全局的权限,如 FILE。全部授予不会分配 GRANT OPTION PROXY 权限。
 
当分配的对象是表、存储函数或存储过程时,object_type 子句(如果存在)应指定为 TABLEFUNCTION PROCEDURE
 
用户对数据库、表、列或例程所拥有的权限,在每个权限级别(包括全局级别)上以逻辑 OR 的形式附加形成帐户权限。不可能因为在较低级别没有权限而拒绝在较高级别授予的权限。例如,此语句授予全局 SELECT INSERT 权限:
 
GRANT SELECT, INSERT ON *.* TO u1;
 
全局授予的权限适用于所有数据库、表和列,即使在这些较低级别中没有授予。
 
从 MySQL 8.0.16 开始,如果启用了 partial_revokes 系统变量,则可以通过为特定数据库撤销在全局级别授予的权限来显式拒绝该权限:
 
GRANT SELECT, INSERT, UPDATE ON *.* TO u1;
REVOKE INSERT, UPDATE ON db1.* FROM u1;
 
前面语句的结果是 SELECT 全局应用于所有表,而 INSERT UPDATE 应用于除 db1 中的表之外的全局。账户对 db1 的访问是只读。
 
如果对一个用户使用表、列或例程权限,服务器会检查所有用户的表、列和例程权限,这会使 MySQL 的速度减慢。类似地,如果限制任何用户的查询、更新或连接数,服务器必须监视这些值。
 
MySQL 允许您对不存在的数据库或表授予权限。对于表,要授予的权限必须包括 CREATE 权限。此行为是故意的,旨在使数据库管理员能够为以后创建的数据库或表准备用户帐户和权限。
 
重要
 
当删除数据库或表时,MySQL 不会自动撤销任何权限。但是,如果删除某个例程,则为该例程授予的任何例程级别权限都将被撤销。

官方网址:

https://dev.mysql.com/doc/refman/8.0/en/grant.html



文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论