在Oracle数据库中,用户的权限分为两种(在这里我们不讨论dba或dbopr的权限,只考虑普通用户的权限),分别是System Privilege系统权限 和User Table Privilege用户数据表权限.
1.首先,创建用户,以下几条命令可以创建一个用户,前提是必须以DBA的身份登录(如果你不是DBA,不要看下去了):
create user DB_USER identified by DB_USER_PW '创建用户DB_USER,密码为DB_USER_PW
grant create session to DB_USER '给用户创建会话的权限
grant resource to DB_USER
2.当用户建立后,会自动在Oracle数据库系统中生成属于该用户的Scheme (可以理解为所有属于该用户的表,视图....等对象的集合).
该用户可以将对这些对象的访问权限赋予其它的系统用户.
3.该用户用sqlplus登录后,以下命令可以看到该用户的权限(该部分取自于CNOUG网站):
本用户读取其他用户对象的权限:
select * from user_tab_privs;
本用户所拥有的系统权限:
select * from user_sys_privs;
4. System Privilege列表
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-228 ADMINISTER DATABASE TRIGGER 0
-227 ADMINISTER RESOURCE MANAGER 1
-161 ALTER PROFILE 0
-189 CREATE ANY LIBRARY 0
-201 CREATE ANY OPERATOR 0
-224 CREATE ANY OUTLINE 0 -141 CREATE ANY PROCEDURE 0
-120 CREATE PUBLIC DATABASE LINK 0
-90 CREATE VIEW 0
-50 DELETE ANY TABLE 0
-220 DEQUEUE ANY QUEUE 1
-63 DROP ANY CLUSTER 0
-223 DROP ANY CONTEXT 0
-217 DROP ANY DIMENSION 0
-178 DROP ANY DIRECTORY 0
-73 DROP ANY INDEX 0
-208 DROP ANY INDEXTYPE 0
-191 DROP ANY LIBRARY 0
-203 DROP ANY OPERATOR 0
-226 DROP ANY OUTLINE 0
-209 EXTENDS ANY TYPE 0 -186 EXTENDS TYPE 0
-139 FORCE ANY TRANSACTION 0
-138 FORCE TRANSACTION 0
-199 WRITEUP 0
-196 WRITEUP DBHIGH
......
......
-- 确定角色的权限
select * from role_tab_privs ; 数据字典视图包含了授予角色的对象权限
select * from role_role_privs ; 包含了授予另一角色的角色
select * from role_sys_privs ; 包含了授予角色的系统权限
-- 确定用户帐户所授予的权限
select * from DBA_tab_privs ; 直接授予用户帐户的对象权限
select * from DBA_role_privs ; 授予用户帐户的角色
select * from DBA_sys_privs ; 授予用户帐户的系统权限
查看当前用户权限:
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
Kyle