系统对象和对象权限

一.概述

1.作用

oracle使用权限来控制用户对数据的访问以及用户所能执行的操作。通过对用户授予权限,用户
能够在自己的模式或其他用户的模式中创建、删除或修改数据库对象,或者在数据库中执行某些
特定的操作。
权限可以通过以下两种方法授予用户
a.直接将权限授予用户
b.首先将权限授予角色,然后再将角色授予用户


2.分类

a.系统权限:在数据库级别执行某种操作,用于控制用户可以执行的某一种或某一类数据库操作,
例如create tablespace的权限。
b.对象权限:针对某个特定的模式对象(表、视图、序列、过程、函数或包)执行各种操作的权利。

二.系统权限管理

1.概述
系统权限可以分为三类
a.针对系统级别或者数据库级别的操作,如create session权限允许用户连接到数据库,create 
tablespace权限允许用户创建表空间
b.允许用户在自己模式内的对象管理,如create table系统权限,允许用户在自己的模式内创建表
c.允许用户在任何模式内的对象管理,如create any table系统权限,允许用户在任何的模式内创
建表
常见的系统权限
create any index,alter any index,drop any index
create table,create any table,alter any table,drop any table,select any table,
       update any table,delete any table
create session,alter session,restricted session
create tablespace alter tablespace,drop tablespace,unlimited tablespace
  注意:
      a.在系统权限内没有create index权限,因为create table权限中已经包含了create index权限
      b.create table,create procedure和create cluster权限中已经包含了删除这些对象的权限
      c.unlimited tablespace系统权限不能授予角色
      d.要使用truncate 命令删减其他模式的表,用户必须具有drop any table的系统权限
2.系统权限的授予和回收
授予:
系统权限可以被授予用户、角色或public公共组,public公共组是一个在创建数据库时自动创建的用户组,
如果将权限授予public用户组,则数据库的任何用户都具有该权限。
使用grant语句来授予系统权限,grant命令由dba完成,如果要以其他用户身份授予系统权限,那么要求
用户必须具有grant any privilege系统权限或用户在得到该权限时具有转授系统权限的选项with admin option
语法:grant {system_privilege} to {user|role|public} [with admin option]
其中with admin option表示被授予的用户可以把该系统权限再授给其他用户
另外:
oracle有两个特殊权限:SYSDBA和SYSOPER,具有该权限的用户能执行数据库维护操作,例如启动和关闭oracle server、
建立数据库、备份和恢复等。
当初始化参数REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE时,可以将SYSDBA和SYSOPER特权授予其他用户,这样
该用户就会在口令文件中出现,并能进行启动和关闭实例等数据库维护操作。
需要注意的是,具有特殊权限SYSDBA或SYSOPER的用户在登录时必须带有AS SSYDBA或AS SYSOPER字句。用户使用SYSOPER
可以执行基本操作任务,但不能查看用户数据。
权限SYSDBA自动包含了SYSOPER的所有权限,另外还具有建立数据库和执行不完全恢复的权限,而SYSOPER则不能执行这两种
操作。
回收:
同样,收回权限一般是由DB用户来完成的,但如果要以其他用户身份收回系统权限,那么要求用户必须具有GRANT ANY PRIVILEGE
系统权限或转授系统权限的选项WITH ADMIN OPTION.
撤销系统权限时不会产生级联影响,无论是否制定ADMIN OPTION

三.对象权限管理

1.概述

对象权限是指访问其他模式对象的权利,它用于控制一个用户对另一个用户的访问。模式对象的创建者具有该对象的所有
权限,并且能够将这些权限授予其他用户。
   注意:
       a.对象权限可以授予用户、角色和public公共组
       b.默认情况下,当直接授予对象权限时,会将访问所有列的权限都授予用户。如果想要只允许用户访问某些列,
         则必须要授予列权限。需要注意,只能在INSERT、UPDATE和PEFERENCES上授予列权限。
       c.select权限不嗯呢该授予列,因此如果希望用户只能查询表中的某些列,唯一的方法是为表创建视图,然后将
         视图的权限授予用户

2.授予和回收对象权限

授予:
语法:grant {object_privilege} on [schema.]object to {user|role|public} [with grant option]
回收:
回收对象权限一般是由对象创建者(所有者)来完成的,但如果要以其他用户身份收回对象权限,那么要求用户必须具有对象权限及
with admin option选项。
在授予对象权限时带的with grant option选项只能被授予用户,而不能被授予角色。
对象权限在回收时会被级联收回

四.查看权限信息

a.查询用户所具有的系统权限以及with admin option
SELECT * FROM DBA_SYS_PRIVS WHERE grantee='AARON';
b.



你可能感兴趣的:(Oracle-Concepts)