MySQL权限分为全局(.)、数据库(db_name.*)、表(db_name.tbl_name)、列(db_name.tbl_name.col_name)及子程序五级,逐层匹配生效,管理权限仅全局有效。

MySQL权限按作用范围分为四类:全局、数据库、表、列,外加子程序(存储过程/函数)这一特殊层级。不同层级对应不同操作粒度,也决定了授权语法是否合法。
全局权限(*.*)
适用于整个MySQL实例,控制服务器级操作,比如重启、查看所有库、创建用户等。这类权限只能用*.*格式授予,不能限定到某个库或表。
- 常见权限:CREATE USER、RELOAD、SHUTDOWN、PROCESS、SUPER、SHOW DATABASES、GRANT OPTION
- 注意:授予DROP ON *.*等于允许删除mysql系统库,极危险
- 错误示例:
GRANT CREATE USER ON test.* TO 'u1'@'%';→ 报错,该权限不支持库级授权
数据库权限(db_name.*)
作用于指定数据库内的所有对象(表、视图、存储过程等),权限存储在mysql.db表中。
- 常见权限:CREATE、DROP、ALTER、LOCK TABLES、REFERENCES、CREATE ROUTINE、EXECUTE
- 例如:
GRANT SELECT, INSERT ON sales.* TO 'appuser'@'10.0.1.%';→ 允许对sales库所有表读写 - CREATE ROUTINE必须配合ALTER ROUTINE才能修改已有存储过程
表与列权限(db_name.tbl_name / db_name.tbl_name.col_name)
精细化控制到单张表甚至某一列,适合敏感字段隔离场景,权限分别存于mysql.tables_priv和mysql.columns_priv表。
主要模块:首页商品推荐 /顾客留言发布 /商品分类浏览 /按商品分类、关键字搜索商品 /商品购物车 人信息中心 /显示商品详细介绍以及多图片显示功能 /商品类别管理有分大类中类的类别设定商品搜索类别设定 /商品管理有临时关闭不在线功能 /订单管理 /支付类型管理模块 留言管理 /后台权限分级管理 /密码修改 /新闻管理 /网站配置管理 /滚动广告管理v1.58更新:1、增强支付接口设置。2、内置支
- 表级常见权限:SELECT、INSERT、UPDATE、DELETE、INDEX、TRIGGER、ALTER
- 列级仅支持SELECT、INSERT、UPDATE,且必须显式列出列名,如:
GRANT UPDATE(salary) ON hr.employees TO 'hr_mgr'@'%'; - UPDATE某列时,若涉及自增或默认值逻辑,仍需对应表的INSERT/ALTER权限配合
子程序权限(routine_name)
专用于存储过程和函数,支持全局、库级、子程序三级授权,权限记录在mysql.procs_priv中。
- 关键权限:EXECUTE(调用)、ALTER ROUTINE(修改/删除)、CREATE ROUTINE(新建)
- EXECUTE可在库级授予(
ON db_name.*),也可精确到单个过程(ON PROCEDURE db_name.p1) - 没有WITH GRANT OPTION时,被授权者无法将EXECUTE权限再转授他人
权限生效依赖内存加载,每次执行GRANT/REVOKE后建议运行FLUSH PRIVILEGES;确保立即生效;实际权限检查是逐层匹配——先查全局,再查库、表、列,任一层满足即通过,但管理类权限(如RELOAD)只认全局层级。









