主题切换
数据库安全与权限控制
一、权限授予(GRANT)
1. 基础语法
sql
GRANT 权限列表
ON [TABLE/DATABASE] 表名/数据库名
TO 用户1, 用户2, ... / PUBLIC
[WITH GRANT OPTION];2. 关键参数解析
PUBLIC:将权限授予所有用户WITH GRANT OPTION:被授权用户可将此权限再授予其他用户(权限可传播)- 有该选项:权限可传递
- 无该选项:权限不可传递
3. 常见权限类型(面试高频)
- 数据操作:
SELECT,INSERT,UPDATE,DELETE - 数据定义:
CREATE,ALTER,DROP - 管理权限:
GRANT OPTION,SUPER,REPLICATION SLAVE
4. 示例
sql
-- 给用户user1授予student表的查询权限,允许再授权
GRANT SELECT ON TABLE student TO user1 WITH GRANT OPTION;
-- 给所有用户授予course表的查询权限
GRANT SELECT ON TABLE course TO PUBLIC;二、权限回收(REVOKE)
1. 基础语法
sql
REVOKE 权限列表
ON [TABLE/DATABASE] 表名/数据库名
FROM 用户1, 用户2, ... / PUBLIC
[RESTRICT | CASCADE];2. 关键参数解析
RESTRICT:仅回收指定用户的权限,若用户已传播权限则报错(安全模式)CASCADE:回收指定用户权限,同时级联回收其传播给其他用户的所有权限
3. 示例
sql
-- 回收user1对student表的查询权限,并级联回收其传播的权限
REVOKE SELECT ON TABLE student FROM user1 CASCADE;三、面试必考点:数据库安全控制的核心模型
1. 自主存取控制(DAC)
- 核心:用户自主决定权限分配(GRANT/REVOKE 实现)
- 特点:灵活性高,但权限管理分散,存在安全风险
- 适用:绝大多数关系型数据库(MySQL、PostgreSQL 等)
2. 强制存取控制(MAC)
- 核心:系统强制规定用户与数据的安全级别,仅当用户级别 ≥ 数据级别时可访问
- 特点:安全性极高,权限无法自主传播
- 适用:高安全场景(如军事、金融数据库)
四、其他数据库安全措施(面试高频)
1. 视图机制
- 原理:创建仅包含部分数据的视图,用户通过视图访问而非直接访问基表
- 优势:隐藏敏感数据,实现行级/列级安全控制
- 示例:创建仅包含学生公开信息的视图,隐藏身份证号、手机号等敏感字段
2. 审计机制
- 原理:记录所有数据库操作日志(登录、查询、修改、授权等)
- 作用:事后追溯安全事件,排查违规操作
- 实现:MySQL 的
general_log、PostgreSQL 的pgAudit插件
3. 数据加密
- 传输加密:SSL/TLS 协议,防止数据在网络传输中被窃取
- 存储加密:对敏感字段(如密码、身份证号)进行哈希/对称加密存储
- 示例:用户密码使用
bcrypt加盐哈希存储,而非明文存储
4. 数据库防火墙
- 原理:拦截非法SQL注入、越权访问等操作
- 作用:实时监控数据库访问行为,阻断攻击
五、面试高频问答
1. WITH GRANT OPTION 和 CASCADE 的区别?
WITH GRANT OPTION:授权时允许用户传播权限CASCADE:回收权限时级联收回其传播的所有权限- 关系:只有通过
WITH GRANT OPTION授予的权限,才需要用CASCADE回收
2. 视图机制和权限控制的区别?
- 权限控制:控制用户能否访问表/列,无法隐藏数据内容
- 视图机制:不仅控制访问权限,还能隐藏敏感数据(如过滤掉身份证号列)
3. 数据加密的两种方式?
- 传输加密:SSL/TLS,防止数据在传输中被窃听
- 存储加密:字段级加密(如密码哈希)或表级加密,防止数据泄露后被直接读取
六、面试速记口诀
- 权限授予看
WITH GRANT OPTION,可传权限要注意 - 权限回收看
CASCADE,级联收回所有传播权 - DAC 自主分配,MAC 强制管控
- 视图藏数据,审计追操作,加密保数据,防火墙拦攻击