99.Oracle数据库SQL开发之 用户特权和角色——角色
欢迎转载,转载请标明出处:blog.csdn.net/notbaron/ar…\
角色就是一组特权,可以分配给一个用户或其他角色。角色的优点和特性可以总结如下几点:
1. 创建角色
要创建角色,必须具有CREATE ROLE系统特权。
也可以给角色创建密码,如下:
CREATE ROLE overall_manager identified bymanager_password;
2. 为角色授权
GRANT语句可以用来将特权授予角色。可以将系统特权和对象特权授予角色,也可以将一个角色授予另外一个角色。
语法还是 GRANT … TO …
3. 将角色授予用户
GRANT语句可以用来将角色授予用户。
语法还是 GRANT … TO …;
4. 检查授予用户的角色
通过查询user_role_privs检查已经授予一个用户哪些角色。
store@PDB1> select * from user_role_privs;
USERNAME
----------------------------------------------------------------------------------------------------
GRANTED_ROLE
----------------------------------------------------------------------------------------------------
ADM DEL DEF OS_ COM
--- --- --- --- ---
STORE
CONNECT
NO NO YES NO NO
STORE
DBA
NO NO YES NO NO
STORE
RESOURCE
NO NO YES NO NO
PS:CONNECT和RESOURCE都是ORACFLE的内置角色。
5. 检查授予角色的系统特权
通过role_sys_privs可以检查已经授予一个角色哪些系统特权。
store@PDB1> select * from role_sys_privs order byprivilege;
6. 检查授予角色的对象特权
通过查询role_tab_privs可以检查已经授予一个角色哪些对象特权。
7. 使用授予角色的特权
通过角色将特权授予用户之后,用户就可以使用这种特权执行被授权的任务了。
8. 默认角色
默认情况下,载将角色授予用户时,就为该用户启用了这个角色。
如果角色具有密码,那么用户在启用角色之前,必须输入密码。
默认情况下,将角色授予用户时,就为该用户启用了这个角色。
可以使用ALTER ROLE语句可以用来对角色进行修改,使其变为非默认角色。
例如修改角色overall_manager默认不启动,如下:
ALTER USER steveDEFAULT ROLE ALL EXCEPT overall_manager;
启动角色,先要使用SET ROLE语句启动,如下:
SET ROLE overall_managerIDENTIFIED BY manager_password;
情况角色的设置如下:
SET ROLE NONE;
将角色设置为除overall_manager之外的任何角色:
SET ROLE ALLEXCEPT overall_manager;
9. 撤销角色
REVOKE语句可以用来撤销角色。
例如:
REVOKE overall_manager FROM steve;
10. 从角色中撤销特权
REVOKE语句可以用来从角色中撤销某种特权。
REVOKE ALL ON products FROMproduct_manager;
11. 删除角色
DROP ROLE语句可以用来删除角色。
例如:
DROP ROLE overall_manager;