1. 数据控制概念
sql中的所有操作都可以归为“增删改查”;而结构化查询语言sql提倡面向对象的设计思想,标准sql语法中提供的对象有:
- 系统管理员对象;
- 数据库对象;
- 数据表对象;
- 视图对象;
- 数据对象(包括表中数据和视图中数据);
- 索引对象
而oracle还扩展出了好多自己数据库具备的对象:
- 表空间对象tablespace;
- 游标对象;
- 目录directory对象;
- oracle用户对象;
- 序列对象;
- constraint约束对象
…
上面的系统管理员对象具备最高权限,即DBMS权限。增删改查操作操作的对象都是其他的对象。
2. 权限和角色
2.1 系统权限和对象权限:
(1)系统管理员对象拥有对数据库的增删改查;
(2)数据库对象拥有对表对象和视图对象的增删改查;
(3)表对象和视图对象拥有对数据对象的增删改查,其中表对象还拥有对索引的增删改查权限;
(4)系统管理员对象和数据库对象拥有的权限是系统权限;而表对象等拥有的权限为对象权限(注意:系统管理员对象对数据库独享的权限不可转移;)
(5)数据库对象拥有的权限以及表对象和视图对象拥有的权限可以转移给用户或者角色;
2.2 角色:
角色是多种权限的集合,可以把角色授予给用户或者其他角色;当要为某一用户同时授予或者回收多项权限时候,可以将这些权限定义为一个角色,然后统一对此角色进行操作;
由此可见,权限授予有两种方式:
(1)直接将1个或者多个权限授予给用户;
(2)先将1个或者多个权限授予给角色,再将角色授予给用户;
总结:数据控制DCL的功能就是:为指定用户或角色授予指定对象的指定操作权限!!!
3. grant语句,标准sql
语法:
GRANT <权限> on 表名[(列名)] to 用户 [with grant option];
授权命令是由数据库管理员使用的,若给用户分配权限时带With grant option子句, 则普通用户获权后,可把自己的权限授予其他用户。
4. revoke语句,标准sql
文档信息
- 本文作者:Marshall