💡 课堂例题
第 8 章 · MySQL 安全管理 · 共 5 题 · 安全管理基于 DCL,示例用教学实例库演示授权范围 · 代码可一键复制
1
创建用户并授全局只读
建 test5,允许本机登录,对全部库有 SELECT。
sql
CREATE USER 'test5'@'localhost' IDENTIFIED BY '123456';
GRANT SELECT ON *.* TO 'test5'@'localhost';user 表里该用户全局 SELECT 为 Y。用它登录能查任何库,但不能增删改——典型的"只读访客"账号。
2
精确到单表的授权
test7 只能查教学实例库的 course 表。
sql
GRANT SELECT ON 教学实例.course TO 'test7'@'localhost' IDENTIFIED BY '123456';权限精确到表级。mysql.db 表无该用户记录,但 mysql.tables_priv 表显示它对 course 表有 Select——这就是"表级权限"。
3
收回权限
把 test5 的全部权限收回来。
sql
REVOKE ALL ON *.* FROM 'test5'@'localhost';
SHOW GRANTS FOR 'test5'@'localhost';REVOKE 后 SHOW GRANTS 只剩 USAGE(仅登录权限),不能再查任何数据。人员调岗时务必这样回收。
4
修改密码两种方式
管理员改他人密码后记得刷新。
sql
ALTER USER 'test2'@'localhost' IDENTIFIED BY 'newpwd';
-- 或(老版本/直接改表):
UPDATE mysql.user SET authentication_string=PASSWORD('new')
WHERE User='test2' AND Host='localhost';
FLUSH PRIVILEGES;MySQL 5.7+ 推荐 ALTER USER;若直接 UPDATE mysql.user 表,必须 FLUSH PRIVILEGES 让改密码生效。
5
最小权限实战
为"成绩录入员"建账号,只给教学实例库 sc 表的增删改查。
sql
CREATE USER 'sc_admin'@'localhost' IDENTIFIED BY '123456';
GRANT SELECT, INSERT, UPDATE, DELETE
ON 教学实例.sc TO 'sc_admin'@'localhost';只给 sc 表的四项数据权限,碰不到 student、teacher 等其他表——这就是"最小必要权限"的落地。