以sys用户登陆oracle,执行select * from V_$PWFILE_USERS;可查询到具有sysdba权限的用户。
sys/change_on_install SYSDBA 或 SYSOPER 不能以 NORMAL 登录,可作为默认的系统管理员
system/manager SYSDBA 或 NORMAL 可作为默认的系统管理员,不能以 SYSOPER 登录,只能以normal登陆,除非你对它授予了sysdba的系统权限或者sysoper系统权限。
sysman/oem_temp(sysman) sysman 为 oms 的用户名
scott/tiger NORMAL 普通用户
aqadm /aqadm SYSDBA 或 NORMAL 高级队列管理员
Dbsnmp/dbsnmp SYSDBA 或 NORMAL 复制管理员
select * from user_role_privs;--查询当前用户具有的角色
select * from session_roles; --查询当前用户具有的角色
select * from user_sys_privs; --查询当前用户具有的权限(系统权限,对数据库登录,创建表,使用表空间等权限)
select * from user_tab_privs; --查询当前用户具有的权限(对象权限,对其他用户表或视图等权限)
select * from dba_role_privs t where t.grantee='MER_BAMS';--查询某个用户具有的角色(用户名必须大写,具备dba角色的用户才可以查询,如sys,system用户等)
select * from dba_sys_privs t where t.grantee in ('MERAMS','RESOURCE');--查询某个用户或者角色具有的权限(系统权限,用户名或者角色名必须大写,具备dba角色的用户才可以查询,如sys,system用户等)
select * from dba_tab_privs t where t.GRANTEE='MER_BAMS';--查询某个用户具有的权限(对象权限,用户名或者角色名必须大写,具备dba角色的用户才可以查询,如sys,system用户等)
select ROLE, PRIVILEGE from role_sys_privs where role='DBA';--查询BDA的权限
权限或角色的传递概念(角色也可以传递)
对象权限是:用户对其他用户的数据对象(表,视图,存储过程等)的操作权限
系统权限是:用户对数据库的相关权限,如登录数据库,使用表空间,查询存储过程,创建表,更新表等。
如果是对象权限就在后面加入with grant option;
例子描述:SYS用户加上with grant option方式赋予A用户查询SCOTT.EMP表的权限,
以用户SYS用户登录,加上with grant option方式赋予A用户查询SCOTT.EMP表的权限
SYS用户:grant select on scott.emp to a with grant option;
以用户A用户登录,加上with grant option方式赋予B用户查询SCOTT.EMP表的权限
A用户: grant select on scott.emp to b with grant option;--如果没有加with grant option,则在用户B处权限停止传递
以用户A登录不可以自己撤销自己对SCOTT.EMP表的查询权限:revoke select on scott.emp from a;--不可以撤销
如果用户SYS用户撤销A用户查询SCOTT.EMP表的权限:revoke select on scott.emp from a;
则B用户也没有了查询SCOTT.EMP表的权限,此种方式是级联撤销。
注意的是:对象权限会级联撤销,但是当前用户不可以撤销自己的权限,查看标识USER_TBA_PRIVS表中GRANTTABLE=YES,则为可传递权限。
如果是系统权限就在后面加入with admin option;
例子描述:SYS用户加上with admin option方式赋予A用户CONNECT权限(其实是CONNECT角色,即CREATE SESSION权限,表示登录数据库权限),
以用户SYS用户登录,加上with admin option方式赋予A用户CONNECT权限
SYS用户:grant connect to a with admin option;
以用户A用户登录,加上with admin option方式赋予B用户CONNECT权限
A用户: grant connect on scott.emp to b;--如果没有加with grant option,在用户B处权限停止传递
以用户A登录可以自己撤销自己的CONNECT权限:revoke connect from a;--可以撤销
如果用户SYS用户撤销A用户CONNECT权限:revoke connect from a;
而B用户仍然有CONNECT权限,并没有级联撤销,CONNECT权限在用户B处任然可以传递。
注意的是:系统权限不会级联撤销,但是当前用户可以撤销自己的权限,查看标识USER_ROLE_PRIVS表中ADMIN_OPRION=YES,则为可传递权限或角色。