

新闻资讯
技术学院MySQL权限分为全局、数据库、表、列四级,逐级收敛;管理类权限控制系统行为,操作类权限面向数据CRUD;DROP、TRUNCATE、GRANT OPTION等权限影响重大,需谨慎授权;授予权限后可用SHOW GRANTS、查询mysql系统表及FLUSH PRIVILEGES验证。
MySQL权限不是笼统的一套,而是按控制粒度划分为四个层级,权限逐级收敛、互不覆盖:
CREATE USER、DROP USER、RELOAD、SUPER。授予时必须写成GRANT ... ON *.*。CREATE、DROP、ALTER、GRANT OPTION。用户可建库删库,但不能碰其他库。SELECT、INSERT、UPDATE、DELETE、INDEX、TRIGGER等。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服务SELECT/INSERT/UPDATE/DELETECREATE ROUTINE、EXECUTE — 管理和调用存储过程REFERENCES — 在建表时定义外键(需配合目标表的SELECT权限)有些权限看似普通,但实际影响超出直觉,部署时常被忽略:
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则自动生效,无需手动刷)