当不需要角色所授予的权限后,可以使用revoke命令从用户那里回收角色。
从用户那里回收角色需要with admin option或grant any role权限
为了演示,我们先将角色clerk和manager检验方法去掉。
如下:
SQL> conn system/oracle
Connected.
SQL> alter role clerk not identified;
Role altered.
SQL> alter role manager not identified;
Role altered.
(去掉角色clerk和manager的口令检验)
查询一下:
SQL> select * from dba_roles
2 where role in('CLERK','SALES','MANAGER');
ROLE PASSWORD
------------------------------ --------
CLERK NO
SALES NO
MANAGER NO
将角色赋予用户:
SQL> grant clerk,manager,sales to cat,dog,pig,fox;
Grant succeeded.
SQL> select * from dba_role_privs
2 where grantee in ('CAT','DOG','PIG','FOX');
GRANTEE GRANTED_ROLE ADM DEF
---------- ------------------------------ --- ---
CAT CLERK NO YES
FOX MANAGER NO YES
FOX SALES NO YES
PIG MANAGER NO YES
DOG MANAGER NO YES
PIG CLERK NO YES
CAT SALES NO NO
DOG CLERK NO YES
CAT MANAGER YES YES
DOG SALES NO YES
PIG SALES NO YES
GRANTEE GRANTED_ROLE ADM DEF
---------- ------------------------------ --- ---
FOX CLERK NO YES
收回角色:
SQL> revoke manager,sales from pig,fox;
Revoke succeeded.
SQL> select * from dba_role_privs where grantee in ('CAT','DOG','PIG','FOX');
GRANTEE GRANTED_ROLE ADM DEF
---------- ------------------------------ --- ---
CAT CLERK NO YES
DOG MANAGER NO YES
PIG CLERK NO YES
CAT SALES NO NO
DOG CLERK NO YES
CAT MANAGER YES YES
DOG SALES NO YES
FOX CLERK NO YES
8 rows selected.
显示结果表明:已经回收角色manager,sales从用户pig,fox
将manager,sales角色授予public:
SQL> grant manager,sales to public;
Grant succeeded.
回收角色:
SQL> revoke manager,sales from public;
Revoke succeeded.
删除角色:
SQL> drop role sales;
Role dropped.
从用户那里回收角色需要with admin option或grant any role权限
为了演示,我们先将角色clerk和manager检验方法去掉。
如下:
SQL> conn system/oracle
Connected.
SQL> alter role clerk not identified;
Role altered.
SQL> alter role manager not identified;
Role altered.
(去掉角色clerk和manager的口令检验)
查询一下:
SQL> select * from dba_roles
2 where role in('CLERK','SALES','MANAGER');
ROLE PASSWORD
------------------------------ --------
CLERK NO
SALES NO
MANAGER NO
将角色赋予用户:
SQL> grant clerk,manager,sales to cat,dog,pig,fox;
Grant succeeded.
SQL> select * from dba_role_privs
2 where grantee in ('CAT','DOG','PIG','FOX');
GRANTEE GRANTED_ROLE ADM DEF
---------- ------------------------------ --- ---
CAT CLERK NO YES
FOX MANAGER NO YES
FOX SALES NO YES
PIG MANAGER NO YES
DOG MANAGER NO YES
PIG CLERK NO YES
CAT SALES NO NO
DOG CLERK NO YES
CAT MANAGER YES YES
DOG SALES NO YES
PIG SALES NO YES
GRANTEE GRANTED_ROLE ADM DEF
---------- ------------------------------ --- ---
FOX CLERK NO YES
收回角色:
SQL> revoke manager,sales from pig,fox;
Revoke succeeded.
SQL> select * from dba_role_privs where grantee in ('CAT','DOG','PIG','FOX');
GRANTEE GRANTED_ROLE ADM DEF
---------- ------------------------------ --- ---
CAT CLERK NO YES
DOG MANAGER NO YES
PIG CLERK NO YES
CAT SALES NO NO
DOG CLERK NO YES
CAT MANAGER YES YES
DOG SALES NO YES
FOX CLERK NO YES
8 rows selected.
显示结果表明:已经回收角色manager,sales从用户pig,fox
将manager,sales角色授予public:
SQL> grant manager,sales to public;
Grant succeeded.
回收角色:
SQL> revoke manager,sales from public;
Revoke succeeded.
删除角色:
SQL> drop role sales;
Role dropped.

1328

被折叠的 条评论
为什么被折叠?



