mysql的全局权限和非全局权限有哪些

mysql的全局权限和非全局权限有哪些

MySQL 8.0 中的权限按作用范围可分为 全局权限非全局权限(即数据库级、表级、列级、存储程序级等)。以下为你系统梳理:

✅ 一、全局权限(Global Privileges)

全局权限作用于整个 MySQL 服务器,适用于所有数据库和对象,存储在 mysql.user 和 mysql.global_grants 表中。

🔹 常见静态全局权限(Static)

权限名 说明
ALL PRIVILEGES GRANT OPTION 外的所有权限
CREATE USER 创建、修改、删除用户
DROP 删除数据库、表、视图等
ALTER 修改表结构
CREATE 创建数据库和表
FILE 使用 LOAD DATA INFILE / SELECT INTO OUTFILE
PROCESS 查看所有线程(SHOW PROCESSLIST
RELOAD 执行 FLUSHRESET
REPLICATION SLAVE 作为复制从库
REPLICATION CLIENT 查看主从状态
SHUTDOWN 关闭服务器
SUPER 已废弃,建议用动态权限代替
GRANT OPTION 允许将自身权限授予他人

🔹 动态全局权限(Dynamic,MySQL 8.0+)

权限名 说明
BACKUP_ADMIN 备份管理(如 LOCK INSTANCE FOR BACKUP
CONNECTION_ADMIN 替代 SUPER 中的连接控制
SHOW_ROUTINE 查看所有存储过程/函数定义(非所有者)
SYSTEM_VARIABLES_ADMIN 设置全局系统变量
ROLE_ADMIN 管理角色
XA_RECOVER_ADMIN 执行 XA RECOVER
BINLOG_ADMIN 管理二进制日志
PERSIST_RO_VARIABLES_ADMIN 持久化只读变量
SESSION_VARIABLES_ADMIN 设置会话变量
SET_USER_ID 设置非自身 DEFINER
SKIP_QUERY_REWRITE 禁止查询重写
SYSTEM_USER 标记为系统账户
TABLE_ENCRYPTION_ADMIN 表加密控制
TELEMETRY_LOG_ADMIN 遥测日志配置
VERSION_TOKEN_ADMIN 使用版本令牌函数

✅ 二、非全局权限(Non-Global Privileges)

非全局权限作用于特定数据库、表、列或存储对象,权限粒度更细。

🔸 数据库级权限(Database-level)

权限名 说明
SELECTINSERTUPDATEDELETE 对数据库中所有表的基础操作
CREATEDROPALTER 创建、删除、修改数据库中对象
CREATE ROUTINE 创建存储过程/函数
ALTER ROUTINE 修改/删除存储过程/函数
EXECUTE 执行存储过程/函数
SHOW VIEW 查看视图定义
EVENT 管理事件调度器
LOCK TABLES 显式锁表

🔸 表级权限(Table-level)

权限名 说明
SELECTINSERTUPDATEDELETE 对表的数据操作
CREATEDROPALTERINDEX 表结构管理
TRIGGER 创建/删除触发器
REFERENCES 创建外键引用

🔸 列级权限(Column-level)

权限名 说明
SELECTINSERTUPDATE 仅作用于某列

🔸 存储过程/函数级权限(Routine-level)

权限名 说明
EXECUTE 执行存储过程/函数
ALTER ROUTINE 修改/删除定义
GRANT OPTION 授权他人执行或修改

✅ 权限分配示例

需求 示例授权
全局管理员 GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
数据库开发者 GRANT CREATE, ALTER, DROP, SELECT, INSERT, UPDATE, DELETE ON devdb.* TO 'dev'@'%';
只读用户 GRANT SELECT ON reportdb.* TO 'readonly'@'192.168.%';
执行存储过程 GRANT EXECUTE ON mydb.* TO 'app'@'%';
查看所有函数定义(非所有者) GRANT SHOW_ROUTINE ON *.* TO 'audit'@'%';

✅ 权限层级总结

层级 作用范围 存储表
全局级 所有数据库 mysql.user, mysql.global_grants
数据库级 指定数据库 mysql.db
表级 指定表 mysql.tables_priv
列级 指定列 mysql.columns_priv
存储程序级 指定 PROCEDURE/FUNCTION mysql.procs_priv

如需快速查看所有权限支持范围,可执行:

SHOW PRIVILEGES;

这将列出 MySQL 支持的所有权限及其适用层级。

posted @ 2026-05-21 09:37  数据库小白(专注)  阅读(18)  评论(0)    收藏  举报