首页 > 代码库 > SQL Fundamentals || DCL(Data Control Language) || 角色ROLES
SQL Fundamentals || DCL(Data Control Language) || 角色ROLES
SQL Fundamentals || Oracle SQL语言
语句 | 解释 |
Create user | Creates a user(usually performed by a DBA) |
Grant | Gives other users privileges to access the objects |
Create role | Creates a collection of privileges, usually performed by a DBA |
Alter user | Changes a user‘s password |
Revoke | Removes privileges on an object from users |
通过数据字典查询
数据字典视图 | 描述 |
dba_users | 用户 |
dba_ts_quotas | 每个用户空间使用配额 |
dba_profiles | 查询profile文件 |
dba_sys_privs | 查询用户权限 |
dba_roles | 查看角色 |
ROLE_SYS_PRIVS | 授予角色的系统权限 |
ROLE_TAB_PRIVS | 授予角色的表权限 |
USER_ROLE_PRIVS | 授予用户的角色 |
USER_SYS_PRIVS | 授予用户的系统权限 |
USER_TAB_PRIVS_MADE | 用户对象上授予的权限 |
USER_TAB_PRIVS_RECD | 授予用户的对象权限 |
USER_COL_PRIVS_MADE | 用户某列上授予的对象权限 |
USER_COL_PRIVS_RECD | 授予用户某列上的对象权限 |
什么是角色Role?
- 数据库系统是role-base基于角色的系统.
- 角色是权限的集合.
- 操作系统中是基于组的系统,操作系统是用户组group.
- 组是用户的集合.
- 可以将权限赋予一个用户,也可以将角色赋予一个用户.
- 创建一个角色;
CREATE ROLE manager;
- 赋予给角色一个权限;
GRANT create table, create view To manager;
- 赋予一个角色给用户;
GRANT manager To wendy, gaga;
角色
- 建立用户而后为其授权是用户管理的基本操作,如果要想让一个用户正常进行操作,那么肯定需要授予很多的操作权限。如果说现在有100个用户,而且这些用户都需要具备相同的权限,那么在进行权限维护的时候肯定不可能针对于100个用户分别维护,而是需要将所有用户的权限一起进行维护,而在这时就只能够将多个权限加入到一个角色之中,通过对角色的维护来实现对多个用户的权限维护(可以是系统权限,也可以是对象权限),
- 所谓的角色就是指一组相关权限的集合。
创建角色
如果用户要创建角色,则可以通过DBA或者是具有相应“CREATE ROLE”权限的用户来完成,
角色的创建语法如下所示。
CREATE ROLE 角色名称 [NOT IDENTIFIED | IDENTIFIED BY 密码 ; |
范例
创建一个普通的角色 |
CREATE ROLE c##role_a ; |
创建一个带有密码的角色 |
CREATE ROLE c##role_b IDENTIFIED BY hello ; |
为角色授权
- 当一个角色创建完成之后,里面并没有任何的权限,用户可以使用GRANT为角色进行授权。
- 范例
为c##role_b角色授权 |
GRANT CREATE SESSION , CREATE ANY TABLE , INSERT ANY TABLE TO c##role_b ; |
将c##role_a的角色授予c##gaga用户 |
GRANT c##role_a TO c##gaga ; |
将c##role_a和c##role_b的角色授予c##wendy用户 |
GRANT c##_role_a ,c##role_b TO c##wendy ; |
修改及回收角色
- 角色密码的设置
设置或取消角色密码 |
ALTER ROLE 角色名称 [NOT IDENTIFIED | IDENTIFIED BY 密码 ]; |
将c##role_a的角色密码设置为hello1 |
ALTER ROLE c##role_a IDENTIFIED BY hello1 ; |
取消c##ole_b角色的密码 |
ALTER ROLE c##role_b NOT IDENTIFIED ; |
- 通过角色回收权限
将CREATE VIEW的权限从c##role_a角色中回收 |
REVOKE CREATE VIEW FROM c##role_a ; |
删除角色
- 当某个角色不再使用时,可以直接利用DROP命令将其删除。
DROP ROLE 角色名称 ;
- 删除c##role_b角色
DROP ROLE c##role_b ;
预定义角色
- 在Oracle之中为了减轻管理员的负担,专门提供了一些预定义角色。
- 将CONNECT、RESOURCE角色授予c##wendy用户
- GRANT CONNECT , RESOURCE TO c##wendy ;
预定义角色 | 描述 |
EXP_FULL_DATABASE | 导出数据库权限 |
IMP_FULL_DATABASE | 导入数据库权限 |
SELECT_CATALOG_ROLE | 查询数据字典权限 |
EXECUTE_CATALOG_ROLE | 数据字典上的执行权限 |
DELETE_CATALOG_ROLE | 数据字典上的删除权限 |
DBA | 系统管理的相关权限 |
CONNECT | 授予用户最典型的权限 |
RESOURCE | 授予开发人员的权限 |
SQL Fundamentals || DCL(Data Control Language) || 角色ROLES