找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

559

积分

0

好友

77

主题
发表于 昨天 22:27 | 查看: 3| 回复: 0

数据库管理实践中,精确的权限控制是保障数据安全与系统稳定的基石。合理运用MySQL提供的权限体系,能够有效遵循“最小权限原则”,避免因账户权限过宽泛而带来的安全隐患。本文将系统梳理MySQL中的静态权限与动态权限列表,助你清晰地掌握每一项权限的具体作用与适用场景。

权限概览

MySQL的权限主要分为两大类:

  • 静态权限:也称为“内置权限”,是MySQL服务器的固有权限,与特定的服务器功能(如建表、查询)直接绑定。其代码内建于服务器中,并持久化存储在系统表mysql.usermysql.db等中。
  • 动态权限:在MySQL 8.0中引入,定义了在运行时执行的特定操作权限。这些权限并非预定义在服务器代码内,而是可以在运行时注册或注销,并仅存储在系统表mysql.global_grants中。

静态权限列表

下表列出了MySQL中的主要静态权限及其作用范围。

权限 允许的操作 作用级别
ALL [PRIVILEGES] 授予指定访问级别的所有权限,但不包括GRANT OPTIONPROXY 根据授权语句指定
ALTER 允许使用ALTER TABLE语句修改表结构。 Global, Database, Table
ALTER ROUTINE 允许修改或删除存储过程/函数(stored routines)。 Global, Database, Routine
CREATE 允许创建新的数据库和表。 Global, Database, Table
CREATE ROLE 允许创建新的角色(Role)。 Global
CREATE ROUTINE 允许创建存储过程/函数。 Global, Database
CREATE TABLESPACE 允许创建、更改或删除表空间和日志文件组。 Global
CREATE TEMPORARY TABLES 允许使用CREATE TEMPORARY TABLE创建临时表。 Global, Database
CREATE USER 允许使用CREATE USERDROP USERRENAME USERREVOKE ALL PRIVILEGES语句管理用户。 Global
CREATE VIEW 允许创建或修改视图。 Global, Database, Table
DELETE 允许从表中删除数据。 Global, Database, Table
DROP 允许删除数据库、表和视图。 Global, Database, Table
DROP ROLE 允许删除角色。 Global
EVENT 启用Event Scheduler(事件调度器)的事件功能。 Global, Database
EXECUTE 允许用户执行存储过程/函数。 Global, Database, Routine
FILE 允许用户通过LOAD DATA INFILESELECT ... INTO OUTFILE读写服务器上的文件。 Global
GRANT OPTION 允许用户将自己拥有的权限授予其他账户,或从其他账户收回权限。 Global, Database, Table, Routine, Proxy
INDEX 允许创建或删除索引。 Global, Database, Table
INSERT 允许向表中插入数据。 Global, Database, Table, Column
LOCK TABLES 允许对拥有SELECT权限的表使用LOCK TABLES语句。 Global, Database
PROCESS 允许用户使用SHOW PROCESSLIST查看所有进程。 Global
PROXY 启用用户代理功能。 User
REFERENCES 启用外键约束的创建(在InnoDB中等效于REFERENCES权限)。 Global, Database, Table, Column
RELOAD 启用FLUSH系列操作,如FLUSH TABLES Global
REPLICATION CLIENT 允许用户查询主从复制中源服务器或副本服务器的状态(如SHOW MASTER STATUS)。 Global
REPLICATION SLAVE 允许副本服务器从源服务器读取二进制日志事件,用于数据复制。 Global
SELECT 允许从表中查询数据。 Global, Database, Table, Column
SHOW DATABASES 允许使用SHOW DATABASES查看所有数据库列表。 Global
SHOW VIEW 允许使用SHOW CREATE VIEW查看视图定义。 Global, Database, Table
SHUTDOWN 允许使用mysqladmin shutdown命令关闭MySQL服务器。 Global
SUPER 启用一系列高级管理操作,如CHANGE REPLICATION SOURCE TOKILL(终止非本用户线程)、PURGE BINARY LOGSSET GLOBAL设置全局变量等。 Global
TRIGGER 允许进行触发器相关操作(创建、删除、执行)。 Global, Database, Table
UPDATE 允许更新表中的数据。 Global, Database, Table, Column
USAGE “无权限”的同义词。在创建用户时授予此权限,表示该用户拥有连接权限,但没有任何数据操作权限。 Global

动态权限列表(MySQL 8.0+)

动态权限为后端开发和DBA提供了更细粒度的控制能力,尤其适用于管理高级的服务器功能和安全特性。

权限 允许的操作 作用级别
APPLICATION_PASSWORD_ADMIN 启用双密码管理(用于密码轮换)。 Global
AUDIT_ABORT_EXEMPT 允许执行被审计日志过滤器(audit log filter)阻止的查询。 Global
AUDIT_ADMIN 启用审计日志(audit log)的配置管理。 Global
AUTHENTICATION_POLICY_ADMIN 启用身份验证策略管理。 Global
BACKUP_ADMIN 启用备份管理操作权限。 Global
BINLOG_ADMIN 启用二进制日志(binary log)的控制权限。 Global
BINLOG_ENCRYPTION_ADMIN 启用和禁用二进制日志加密。 Global
CLONE_ADMIN 启用克隆(Clone)操作的管理权限。 Global
CONNECTION_ADMIN 启用连接限制与控制。 Global
ENCRYPTION_KEY_ADMIN 启用InnoDB主加密密钥的轮换操作。 Global
FIREWALL_ADMIN 启用防火墙规则管理(任何用户均可管理)。 Global
FIREWALL_EXEMPT 允许用户不受防火墙规则限制。 Global
FIREWALL_USER 启用用户管理自身防火墙规则的权限。 Global
FLUSH_OPTIMIZER_COSTS 启用优化器成本(optimizer costs)的重新加载。 Global
FLUSH_STATUS 启用状态指示器(status indicators)的刷新。 Global
FLUSH_TABLES 启用表的刷新(flush)操作。 Global
FLUSH_USER_RESOURCES 启用用户资源(user-resource)的刷新。 Global
GROUP_REPLICATION_ADMIN 启用组复制(Group Replication)的控制权限。 Global
INNODB_REDO_LOG_ARCHIVE 启用重做日志(redo log)归档管理。 Global
INNODB_REDO_LOG_ENABLE 启用或禁用重做日志记录。 Global
NDB_STORED_USER 启用NDB集群(NDB Cluster)中SQL节点之间的用户或角色共享。 Global
PASSWORDLESS_USER_ADMIN 启用无密码用户账户的管理。 Global
PERSIST_RO_VARIABLES_ADMIN 启用只读系统变量的持久化。 Global
REPLICATION_APPLIER 允许担任复制通道的PRIVILEGE_CHECKS_USER Global
REPLICATION_SLAVE_ADMIN 启用常规复制的控制权限。 Global
RESOURCE_GROUP_ADMIN 启用资源组(resource group)的管理。 Global
RESOURCE_GROUP_USER 启用会话级别的资源组管理。 Global
ROLE_ADMIN 允许授予或收回角色时使用WITH ADMIN OPTION,赋予角色管理权。 Global
SESSION_VARIABLES_ADMIN 启用设置受限制的会话系统变量。 Global
SET_USER_ID 允许为非自身账户的对象设置DEFINER值。 Global
SHOW_ROUTINE 允许用户访问存储过程/函数的定义,即使该用户没有EXECUTE权限。 Global
SKIP_QUERY_REWRITE 不对该用户执行的查询进行重写(Query Rewrite)。 Global
SYSTEM_USER 指定账户为系统账户,拥有更高层级的安全属性。 Global
SYSTEM_VARIABLES_ADMIN 允许修改或持久化全局系统变量。 Global
TABLE_ENCRYPTION_ADMIN 启用覆盖默认表加密设置的能力。 Global
TELEMETRY_LOG_ADMIN (针对AWS MySQL HeatWave)启用遥测日志配置。 Global
TP_CONNECTION_ADMIN 启用线程池(thread pool)连接的管理。 Global
VERSION_TOKEN_ADMIN 启用版本令牌(Version Tokens)相关函数的管理。 Global
XA_RECOVER_ADMIN 允许执行XA RECOVER语句。 Global

总结

掌握MySQL的静态与动态权限是实施精细化云原生数据库访问控制的关键。静态权限涵盖了绝大多数传统的数据定义与操作,而动态权限则提供了面向现代数据库高级特性的精细化管理能力。在实际授权时,应优先考虑使用角色(Role)来封装一组权限,再将其授予用户,这将极大简化权限管理流程并提升安全性。




上一篇:汇川PLC编程:CONTINUE指令在循环控制中的实战详解与EXIT指令对比
下一篇:SQL多表联合查询实战指南:从基础连接到复杂统计分析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-8 23:07 , Processed in 1.287229 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表