配色: 字号:
Oracle(四)查询用户权限
2016-03-11 | 阅:  转:  |  分享 
  
Oracle查询用户权限





selectprivilegefromdba_SYS_privswheregrantee=''USERNAME''





--7.查看有sysdba或sysoper系统权限的用户

selectfromV$PWFILE_USERS









--查看权限

selectfromuser_sys_privs;--查看当前用户所有权限

selectfromuser_tab_privs;--查看所用用户对表的权限





--确定角色的权限

selectfromrole_tab_privs;--包含了授予角色的对象权限

selectfromrole_role_privs;--包含了授予另一角色的角色

selectfromrole_sys_privs;--包含了授予角色的系统权限



--确定用户帐户所授予的权限

selectfromDBA_tab_privs;--直接授予用户帐户的对象权限

selectfromDBA_role_privs;--授予用户帐户的角色

selectfromDBA_sys_privs;--授予用户帐户的系统权限



查看当前用户权限:

SQL>selectfromsession_privs;







Oracle本身的数据字典设计我个人觉得很合理,因为DBA_xxx,ALL_xxx,USER_xxx让人一看大概就知道这个视图是干什么用的.本文简要总结了一下与权限,角色相关的视图.



一.概述



与权限,角色相关的视图大概有下面这些:



DBA_SYS_PRIVS:查询某个用户所拥有的系统权限

USER_SYS_PRIVS:当前用户所拥有的系统权限

SESSION_PRIVS:当前用户所拥有的全部权限



ROLE_SYS_PRIVS:某个角色所拥有的系统权限

注意:要以SYS用户登陆查询这个视图,否则返回空.



ROLE_ROLE_PRIVS:当前角色被赋予的角色

SESSION_ROLES:当前用户被激活的角色

USER_ROLE_PRIVS:当前用户被授予的角色



另外还有针对表的访问权限的视图:



TABLE_PRIVILEGES

ALL_TAB_PRIVS

ROLE_TAB_PRIVS:某个角色被赋予的相关表的权限



...







二.Examples







1.查询当前用户所拥有的权限

Selectfromsession_privs;



2.查询某个用户被赋予的系统权限.

可以有多种方式

Selectfromuser_sys_privs;



或者:selectfromDBA_SYS_PRIVSwheregrantee=''XXX''

(需要当前用户拥有DBA角色)





3.查询当前用户被授予的角色:



1.SelectfromSESSION_ROLESorderbyROLE

说明:这个查询会返回当前用户所被授予的全部角色,其中包括



嵌套授权的角色.例如将DBA角色授予了一个用户,DBA角色



已经被授予的角色(例如exp_full_database和imp_full_database)



也会被查询出来



2.SelectfromUSER_ROLE_PRIVS







4.查询某一角色被赋予的系统权限



SelectPrivilegefromROLE_SYS_PRIVSwhereROLE=&Role



输入role=''CONNECT''



输出:

PRIVILEGE

--------------------

ALTERSESSION

CREATECLUSTER

CREATEDATABASELINK

CREATESEQUENCE

CREATESESSION

CREATESYNONYM

CREATETABLE

CREATEVIEW







5.查询当前角色被授予的角色



SelectGRANTED_ROLEfromROLE_ROLE_PRIVSwhereROLE=&ROLE



输入role=''DBA''



输出:



GRANTED_ROLE

----------------------

DELETE_CATALOG_ROLE

EXECUTE_CATALOG_ROLE

EXP_FULL_DATABASE

IMP_FULL_DATABASE

PLUSTRACE

SELECT_CATALOG_ROLE



说明:PLUSTRACE这个角色是用于执行SQLAUTOTRACE的,通过执行



$ORACLE_HOME/sqlplus/admin/plustrce.sql可以生成这个角色.



-------------------------------------------------------------------------------------------------------------------------



如何查看oracle用户权限?





ORACLE数据字典视图的种类分别为:USER,ALL和DBA。



USER_:有关用户所拥有的对象信息,即用户自己创建的对象信息



ALL_:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上



其他用户创建的对象但该用户有权访问的信息



DBA_:有关整个数据库中对象的信息



(这里的可以为TABLES,INDEXES,OBJECTS,USERS等。)



1、查看所有用户



selectfromdba_user;



selectfromall_users;



selectfromuser_users;



2、查看用户系统权限



selectfromdba_sys_privs;



selectfromall_sys_privs;



selectfromuser_sys_privs;



3、查看用户对象权限



selectfromdba_tab_privs;



selectfromall_tab_privs;



selectfromuser_tab_privs;



4、查看所有角色



selectfromdba_roles;



5、查看用户所拥有的角色



selectfromdba_role_privs;



selectfromuser_role_privs;



6、查看当前用户的缺省表空间



selectusername,default_tablespacefromuser_users;



7、查看某个角色的具体权限



如grantconnect,resource,createsession,createviewtoTEST;



8、查看RESOURCE具有那些权限



用SELECTFROMDBA_SYS_PRIVSWHEREGRANTEE=''RESOURCE'';































献花(0)
+1
(本文系眼界999首藏)