第4章 数据库安全性
| 对象类型 | 对象 | 操作类型 |
|---|---|---|
| 数据库 模式 |
模式 | CREATE SCHEMA |
| 基本表 | CREATE TABLE, ALTER TABLE | |
| 视图 | CREATE VIEW | |
| 索引 | CREATE INDEX | |
| 数据 | 基本表和视图 |
SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALL PRIVILEGES |
| 属性列 |
SELECT, INSERT, UPDATE, REFERENCES, ALL PRIVILEGES |
1 GRANT
GRANT <权限> [, <权限> ] ...
ON <对象类型> <对象名> [, <对象类型> <对象名> ] ...
TO <用户> [ , <用户> ] ...
[ WITH GRANT OPTION ];
WITH GRANT OPTION:被授权者可继续将自己接受到的权限授权给其他用户
2 REVOKE
REVOKE <权限> [, <权限>] ...
ON <对象名> [, <对象名>] ...
FROM <用户> [, <用户>] ... [CASCADE | RESTRICT];
CASCADE表示要进行权限的 ‘连锁回收’RESTRICT表示:只有当不存在连锁回收问题时,才能从指定用户那里回收权限
3 CREATE USER
-- CREATE USER <username> [WITH] [DBA | RESOURCE | CONNECT]; 实际上各个数据库相差甚远
CREATE USER username IDENTIFIED BY ‘password’;
| 拥有的权限 | 可否执行的操作 | |||
|---|---|---|---|---|
| CREATE USER |
CREATE SCHEMA |
CREATE TABLE |
登录数据库,执行 数据查询和操纵 |
|
| DBA | 可以 | 可以 | 可以 | 可以 |
| RESOURCE | 不可以 | 不可以 | 可以 | 可以 |
| CONNECT | 不可以 | 不可以 | 不可以 | 可以,但必须拥有 相应权限 |
4 数据库角色
CREATE ROLE rolename [, rolename] ...;
数据库角色:被命名的一组与数据库操作相关的权限
- 角色是权限的集合
- 可以为一组具有相同权限的用户创建一个角色
- 简化授权的过程
【例】 通过角色来实现将一组权限授予一个用户
- 首先创建一个角色
R1
CREATE ROLE R1;
- 然后使用
GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
GRANT SELECT, UPDATE, INSERT ON TABLE Student TO R1;
- 将这个角色的授予王平,张明,赵玲。使他们具有角色
R1所包含的全部权限:
GRANT R1 TO 王平, 张明, 赵玲;
- 可以一次性通过
R1来回收王平的这3个权限
REVOKE R1 FROM 王平;
5 视图机制
先创建视图,再把对视图操作的权限授予用户
6 AUDIT(审计)
启用一个专用的审计日志(Audit Log)将用户对数据库的所有操作记录在上面
AUDIT语句:设置审计功能NOAUDIT语句:取消审计功能
AUDIT ALTER, UPDATE ON SC;
标题:第4章 数据库安全性
作者:Zwing
创建于:2026-08-08 19:03:00
更新于:2026-08-08 12:06:24
链接:https://zanytriumph.github.io/posts/数据库安全性.html
版权声明:本文章采用 CC BY-NC-SA 4.0 进行许可