前两天工作的时候,突然有了一个很具体需求,想查询当前登录用户A对表B是否有查询权限。然后就在网上找到了一些相关的文章,前面问题的答案也出来了。
查询两个数据字典就可以知道:
1. select * from user_sys_privs;
2. select * from user_tab_privs;
在此总结一下oracle中的权限授予。
用户权限分为system privilege(用于访问数据库)和object privilege(用于操作数据库对象)。
典型的一些system privilege:
create user, drop user, select any table, create any table, drop any table, backup any table, update any table.
CREATE USER user1
IDENTIFIED BY password1;
创建完user之后,就可以给user赋权了
典型的user system privilege:
create session, create table, create sequence, create view, create procedure.
GRANT create session, create table
TO user1;
CREATE ROLE role1;
GRANT create table, create view
TO role1;
GRANT role1 TO user1;
Object privilege用于操作特定的table, view, sequence和procedure.
一些典型的权限select, update, alter, delete, insert, execute, index, references
GRANT update (column1, column2)
ON object1
TO user1, role1
[WITH GRANT OPTION];
也可以赋权给PUBLIC,表示赋权给所有用户,WITH GRANT OPTION表示被授权者可以将权限赋给其他用户和角色。
将权限收回:
REVOKE privilege1|ALL
ON object1
FROM user1, role1