对象权限
不同的对象具有不同的对象权限
对象的拥有者拥有所有权限
对象的拥有者可以向外分配权限
ORACLE一共有种对象权限
对象权限 表 视图 序列 过程
修改(alter) √ √
删除(delete) √ √
执行(execute) √
索引(index) √
插入(insert) √ √
关联(references) √ √
选择(select) √ √ √
更新(update) √ √
a.对象授权
GRANT object_priv|ALL [(columns)]
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION];
ALL:所有对象权限
PUBLIC:授给所有的用户
WITH GRANT OPTION:允许用户再次给其它用户授权
查询用户所拥有的权限
select owner,table_name,grantor,privilege from user_tab_privs;
select owner,table_name,grantor,privilege from user_col_privs;
b.授予系统权限与授予对象权限的语法差异:
授予对象权限时需要指定关键字ON,从而能够确定权限所应用的对象。对于表和视图可以指定特定的列来授权。
示例
授予c##guest 账户 fixf_svr_szh 查询权限给c##test,只对zhid字段授予update权限,将权限授予给c##test1角色。
SQL> grant select on c##guest.fixf_svr_szh to c##test;
Grant succeeded.
SQL> grant update (zhid) on c##guest.fixf_svr_szh to c##test;
Grant succeeded.
SQL> grant update (zhid) on c##guest.fixf_svr_szh to c##test1;
Grant succeeded.
向数据库所有用户分配权限
SQL> grant select on c##guest.fixf_svr_xzh to public;
Grant succeeded.
数据字典视图描述
USER_TAB_PRIVS_MADE 查询授出去的对象权限(通常是属主自己查)
USER_TAB_PRIVS_RECD 用户拥有的对象权限
USER_COL_PRIVS_MADE 用户分配出去的列的对象权限
USER_COL_PRIVS_RECD 用户拥有的关于列的对象权限
USER_SYS_PRIVS 用户拥有的系统权限
USER_TAB_PRIVS 用户拥有的对象权限
USER_ROLE_PRIVS 用户拥有的角色
收回对象权限
使用REVOKE 语句收回权限
使用WITH GRANT OPTION 子句所分配的权限同样被收回
REVOKE {privilege [, privilege…]|ALL}
ON object
FROM {user[, user…]|role|PUBLIC}
[CASCADE CONSTRAINTS];
CASCADE CONSTRAINTS 为处理引用完整性时需要
取消授予所有用户的查询权限
SQL> revoke select on c##guest.fixf_svr_xzh from public;
Revoke succeeded.
取消表字段update权限,如果需要修改或添加update权限的字段,应该先取消后重新添加。
SQL> revoke update on c##guest.fixf_svr_szh from c##test1;
Revoke succeeded.
SQL> grant update (zhid,hm,ye) on c##guest.fixf_svr_szh to c##test1;
Grant succeeded.
级联权限添加’with grant option’,如果取消某个用户的对象权限,对于该用户使用with grant option授予其它用户相同权限来说, 将级联删除这些用户权限
SQL> grant select on c##guest.fixf_Svr_xzh to c##test with grant option;
Grant succeeded.
SQL> revoke select on c##guest.fixf_svr_xzh from c##test;
Revoke succeeded.