格式:
revoke {系统权限||角色} {,{系统权限|角色名}}...
from {用户名|角色名|public}{,{用户名|角色名|public}}...
例如:
SQL> revoke create view from cat;
Revoke succeeded.
查询一下:
SQL> select * from dba_sys_privs
2 where grantee='CAT';
GRANTEE PRIVILEGE ADM
------------------------------ ------------------------ ---
CAT CREATE SESSION YES
CAT CREATE TABLE YES
CAT SELECT ANY TABLE YES
由于cat用户将权限授予了dog,那么,dog的权限是否也被收回呢?我们查询一下:
SQL> select * from dba_sys_privs
2 where grantee in('DOG','FOX','PIG');
GRANTEE PRIVILEGE ADM
------------------------------ ------------------------ ---
DOG CREATE SESSION YES
DOG SELECT ANY TABLE YES
DOG CREATE TABLE YES
FOX CREATE TABLE YES
DOG CREATE VIEW YES
FOX CREATE VIEW YES
FOX SELECT ANY TABLE YES
FOX CREATE SESSION YES
查询显示:虽然cat权限被收回,但是其他用户没有影响。同时,虽然,cat用户授予了其他用户权限,但其他用户也有权限将cat用户的权限收回。
例如:以dog用户收回cat用户的权限:
SQL> conn dog/wangwang
Connected.
SQL> select * from session_privs;
PRIVILEGE
------------------------
CREATE SESSION
CREATE TABLE
SELECT ANY TABLE
CREATE VIEW
回收权限:
SQL> revoke create session from cat;
Revoke succeeded.
SQL> conn cat/miaomiao
ERROR:
ORA-01045: user CAT lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
发现:收回cat create session权限后,cat用户等不不上系统了。
我们再用system登陆查询一下权限:
SQL> conn system/oracle
Connected.
SQL> select * from dba_sys_privs where grantee in ('CAT','DOG','FOX','PIG');
GRANTEE PRIVILEGE ADM
------------------------------ ------------------------ ---
DOG CREATE SESSION YES
CAT CREATE TABLE YES
DOG SELECT ANY TABLE YES
CAT SELECT ANY TABLE YES
DOG CREATE TABLE YES
FOX CREATE TABLE YES
DOG CREATE VIEW YES
FOX CREATE VIEW YES
FOX SELECT ANY TABLE YES
FOX CREATE SESSION YES
查询发现:cat用户只剩下了两个权限create table和select any table。
另一个权限被收回了。
注:授权的时候要谨慎,授予用户权限要使用最小化原则。只要够用就行。权利一定要掌握在自己的手里。
revoke {系统权限||角色} {,{系统权限|角色名}}...
from {用户名|角色名|public}{,{用户名|角色名|public}}...
例如:
SQL> revoke create view from cat;
Revoke succeeded.
查询一下:
SQL> select * from dba_sys_privs
2 where grantee='CAT';
GRANTEE PRIVILEGE ADM
------------------------------ ------------------------ ---
CAT CREATE SESSION YES
CAT CREATE TABLE YES
CAT SELECT ANY TABLE YES
由于cat用户将权限授予了dog,那么,dog的权限是否也被收回呢?我们查询一下:
SQL> select * from dba_sys_privs
2 where grantee in('DOG','FOX','PIG');
GRANTEE PRIVILEGE ADM
------------------------------ ------------------------ ---
DOG CREATE SESSION YES
DOG SELECT ANY TABLE YES
DOG CREATE TABLE YES
FOX CREATE TABLE YES
DOG CREATE VIEW YES
FOX CREATE VIEW YES
FOX SELECT ANY TABLE YES
FOX CREATE SESSION YES
查询显示:虽然cat权限被收回,但是其他用户没有影响。同时,虽然,cat用户授予了其他用户权限,但其他用户也有权限将cat用户的权限收回。
例如:以dog用户收回cat用户的权限:
SQL> conn dog/wangwang
Connected.
SQL> select * from session_privs;
PRIVILEGE
------------------------
CREATE SESSION
CREATE TABLE
SELECT ANY TABLE
CREATE VIEW
回收权限:
SQL> revoke create session from cat;
Revoke succeeded.
SQL> conn cat/miaomiao
ERROR:
ORA-01045: user CAT lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
发现:收回cat create session权限后,cat用户等不不上系统了。
我们再用system登陆查询一下权限:
SQL> conn system/oracle
Connected.
SQL> select * from dba_sys_privs where grantee in ('CAT','DOG','FOX','PIG');
GRANTEE PRIVILEGE ADM
------------------------------ ------------------------ ---
DOG CREATE SESSION YES
CAT CREATE TABLE YES
DOG SELECT ANY TABLE YES
CAT SELECT ANY TABLE YES
DOG CREATE TABLE YES
FOX CREATE TABLE YES
DOG CREATE VIEW YES
FOX CREATE VIEW YES
FOX SELECT ANY TABLE YES
FOX CREATE SESSION YES
查询发现:cat用户只剩下了两个权限create table和select any table。
另一个权限被收回了。
注:授权的时候要谨慎,授予用户权限要使用最小化原则。只要够用就行。权利一定要掌握在自己的手里。