场景引入:
凌晨三点,你的手机突然狂震——线上数据库报警,某个新来的实习生误操作删了用户表,你一边骂骂咧咧地爬起来,一边疑惑:"这账号哪来的删表权限?" 别急,今天我们就掀开MySQL权限系统的底裤,看看那五个掌控生杀大权的核心表,如何像江湖门派一样管理着数据库的"武功秘籍"。
作用:记录所有用户的全局权限(比如能不能开山立派)
-- 典型字段示例 SELECT Host,User,Select_priv,Shutdown_priv FROM mysql.user;
关键点:
SHUTDOWN
权限能让用户直接关闭MySQL服务器 Host
字段和User
字段组合才是唯一ID——这意味着root@localhost
和root@%
是两个完全不同的账号 authentication_string
字段了吗?那就是你的"武林秘钥" 实战坑点:
某次故障排查发现,开发同事在user
表给自己开了GRANT OPTION
权限,结果他转头就给自己加了数据库管理员权限...(建议用SHOW GRANTS
命令定期审计)
作用:控制用户对特定数据库的权限(比如华山派弟子能不能进藏经阁)
-- 查看谁有test库的写权限 SELECT * FROM mysql.db WHERE Db='test' AND Insert_priv='Y';
运行逻辑:
当用户操作数据库时,MySQL会先查user
表,如果没找到全局权限,就来找db
表——好比武林盟主不管的事,就交给地方分舵处理。
经典场景:
给外包团队开临时权限时,千万别在user
表给全局权限,而是在db
表精确到库:
GRANT SELECT ON project_temp.* TO 'outsource'@'192.168.%';
作用:控制表级权限(九阴真经》这本秘籍谁能看)
-- 查看哪些用户有特殊表权限 SELECT * FROM mysql.tables_priv WHERE Table_name='salary';
特色功能:
SELECT
、INSERT
等操作 Grantor
字段看到是谁给的权限(追责神器) 血泪教训:
某财务系统把salary
表的UPDATE
权限单独授予HR总监,结果忘了回收前HR总监的权限...(所以离职审计别忘了查这个表!)
作用:列级权限控制(葵花宝典》第一页禁止阅读)
-- 检查敏感列的权限 SELECT * FROM mysql.columns_priv WHERE Column_name='id_card';
适用场景:
salary
列 create_time
字段 骚操作预警:
有黑客会利用information_schema
结合这个表的漏洞来探测表结构,记得定期检查异常授权!
作用:存储过程和函数的执行权限(比如降龙十八掌只能传给丐帮弟子)
-- 查看存储过程权限 SELECT * FROM mysql.procs_priv WHERE Routine_name='calculate_bonus';
特别注意:
EXECUTE
权限 SELECT * FROM mysql.user WHERE User NOT IN ('root','mysql.sys');
user
表设置password_expired
强制定期换密码 FLUSH PRIVILEGES
,但更推荐用REVOKE
语句 最后的大招:
遇到权限混乱时,用这个命令看最终生效权限:
SHOW GRANTS FOR 'dev_user'@'%';
(本文技术细节基于MySQL 8.0版本,最后检查时间2025年8月)
本文由 宓冰心 于2025-08-02发表在【云服务器提供商】,文中图片由(宓冰心)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/515555.html
发表评论