神甫 发表于 2018-9-13 10:20:12

ORACLE用户权限管理笔记整理

  select * from user_tab_privs where grantee='EDMS'; --查看用户的表权限
  select * from user_sys_privs where grantee='EDMS'; --查看用户的系统权限
  select * from session_privs;   --查看用户权限
  select * from user_role_privs where username='EDMS';   --查看用户角色
  select * from role_tab_privs where role='CONNECT';   --查看角色表权限
  select * from role_sys_privs where role='CONNECT';--查看角色系统权限
  select username from dba_users;查询系统所有用户
  select * from dba_users where username = 'XXXX';查询用户相关信息
  select * from dba_roles;    查询系统所有角色
  DBA_ROLE_PRIVS      查询某个用户具有的角色或者某个角色下的有哪些用户
  select * from dba_role_privs wheregrantee ='SYS';
  select * fromdba_role_privs where granted_role ='RESOURCE';
  DBA_SYS_PRIVS   查询某个用户具有的系统权限
  select grantee,privilege from dba_sys_privs where grantee='XXXX';
  ROLE_SYS_PRIVS显示授予角色的系统权限
  select* from role_sys_privs where role = 'RESOURCE';查询RESOURCE角色相关的权限
  ROLE_TAB_PRIVS显示授予角色的表权限
  管理用户、角色和权限的DBA视图:
  DBA_USERS         提供用户的信息
  DBA_ROLES         显示数据库中所有角色
  DBA_COL_PRIVS   显示列级对象授权
  DBA_ROLE_PRIVS    显示用户及其角色
  DBA_SYS_PRIVS   显示被授予系统权限的用户
  DBA_TAB_PRIVS   显示用户及他们在表上的权限
  ROLE_ROLE_PRIVS   显示授予角色的角色
  ROLE_SYS_PRIVS    显示授予角色的系统权限
  ROLE_TAB_PRIVS    显示授予角色的表权限
  SESSION_PRIVS   显示允许用户使用的权限
  SESSION_ROLES   显示当前允许用户使用的角色
  select * from session_privs;查询用户本身拥有的权限
  select * from user_role_privs;查询用户本身拥有的角色
  select * from dba_role_privs wheregrantee ='SYS';查询某个用户所具有的角色;
  select * from dba_sys_privs where grantee='CONNECT'; 查询角色所拥有的权限
  select * from role_sys_privs where role='CONNECT';查询角色所拥有的权限
  Oracle 权限设置
  一、权限分类:
  系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
  实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
  二、系统权限管理:
  1、系统权限分类:
  DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
  RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
  CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
  对于普通用户:授予connect, resource权限。
  对于DBA管理用户:授予connect,resource, dba权限。
  2、系统权限授权命令:
  [系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)]
  授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...;
  [普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]
  例:
  SQL> connect system/manager

  SQL> Create user user50>  SQL> grant connect, resource to user50;
  查询用户拥有哪里权限:
  SQL> select * from dba_role_privs;
  SQL> select * from dba_sys_privs;
  SQL> select * from role_sys_privs;
  删除用户:SQL> drop user 用户名 cascade;//加上cascade则将用户连同其创建的东西全部删除
  普通用户使用set autotrace on
  首先需创建PLUSTRACE角色,用SYS登录执行@$ORACLE_HOME/sqlplus/admin/plustrce.sql
  赋于test用户角色,grant plustrace to test
  test用户添加角色后依旧报的错:
  ERROR:
  ORA-01039: insufficient privileges on underlying objects of the view
  SP2-0612: Error generating AUTOTRACE EXPLAIN report
  没有权限查看系统相关的视图
  select * from role_sys_privs; 查询角色以及它的相关权限
  select * from role_sys_privs where role='OEM_MONITOR'; 查询SELECT ANY DICTIONARY 这个权限所在的角色。
  然后可以单个赋于SELECT ANY DICTIONARY这个权限,或者给test赋于OEM_MONITOR这个角色。
  grant SELECT ANY DICTIONARY to test

页: [1]
查看完整版本: ORACLE用户权限管理笔记整理