MySQL权限分为全局、数据库、表、列四级,逐级收敛;管理类权限控制系统行为,操作类权限面向数据CRUD;DROP、TRUNCATE、GRANT OPTION等权限影响重大,需谨慎授权;授予权限后可用SHOW GRANTS、查询mysql系统表及FLUSH PRIVILEGES验证。

MySQL权限按作用范围分四类
MySQL权限不是笼统的一套,而是按控制粒度划分为四个层级,权限逐级收敛、互不覆盖:
-
全局权限(*.*):影响整个MySQL服务,比如
CREATE USER、DROP USER、RELOAD、SUPER。授予时必须写成GRANT ... ON *.*。 -
数据库权限(db_name.*):仅对指定数据库生效,如
CREATE、DROP、ALTER、GRANT OPTION。用户可建库删库,但不能碰其他库。 -
表权限(db_name.table_name):细化到某张表,常用
SELECT、INSERT、UPDATE、DELETE、INDEX、TRIGGER等。 -
列权限(db_name.table_name.column_name):最细粒度,只允许对特定字段执行
SELECT或UPDATE,例如GRANT SELECT(name, email) ON mydb.users TO 'u1'@'localhost';
管理类权限和操作类权限要区分
权限本质有两种用途,混淆容易导致越权或功能异常:
-
管理类权限:不操作数据,而是控制系统行为。例如:
•REPLICATION CLIENT— 查看主从状态(SHOW SLAVE STATUS)
•FILE— 读写服务器本地文件(LOAD DATA INFILE/SELECT ... INTO OUTFILE),风险极高,慎授
•PROCESS— 查看所有线程(SHOW PROCESSLIST)
•SHUTDOWN— 关闭MySQL服务 -
操作类权限:面向数据对象的常规CRUD及结构变更。例如:
•SELECT/INSERT/UPDATE/DELETE
•CREATE ROUTINE、EXECUTE— 管理和调用存储过程
•REFERENCES— 在建表时定义外键(需配合目标表的SELECT权限)
几个关键权限的实际影响要注意
有些权限看似普通,但实际影响超出直觉,部署时常被忽略:
具有服装类网店的常用的功能和完善的商品类型管理、商品管理、配送支付管理、订单管理、会员分组、会员管理、查询统计和多项商品促销功能。系统具有静态HTML生成、UTF-8多语言支持、可视化模版引擎等技术特点,适合建立服装、鞋帽、服饰类网店。系统具有以下主要功能模块: 网站参数设置 - 对网站的一些参数进行个性化定义 会员类型设置 - 可以任意创建多个会员类型,设置不同会员类型的权限和价格级别 货币类型
-
DROP权限在表级 = 允许DROP TABLE;但在数据库级 = 允许DROP DATABASE;若授予DROP ON *.*,用户可删掉mysql系统库 —— 权限丢失、服务瘫痪。 -
TRUNCATE TABLE虽不是独立权限,但执行它需要该表的DROP权限(因底层是先删后重建)。 -
GRANT OPTION不是数据操作权,而是“转授权力”——拿到它,用户就能把已有权限再授给他人,相当于二级管理员,务必严格控制。 -
ALL PRIVILEGES≠ 所有权限全开:它不包含GRANT OPTION和PROXY等特殊权限,显式添加才生效。
权限查看与验证方法
授完权别急着走,三步确认是否生效:
- 查用户当前所有权限:
SHOW GRANTS FOR 'user'@'host'; - 查权限来源(哪个层级生效):
SELECT * FROM mysql.db WHERE User='user' AND Host='host';(对应数据库级) - 权限变更后必须刷新:
FLUSH PRIVILEGES;(仅当直接改mysql系统表时强制需要;用GRANT/REVOKE则自动生效,无需手动刷)









