oracle 权限详解(转载)

(转载之百度文库)http://wenku.baidu.com/view/f68a333b580216fc700afd08.html
 alter any cluster 修改任意簇的权限
  alter any index 修改任意索引的权限
  alter any role 修改任意角色的权限
  alter any sequence 修改任意序列的权限
  alter any snapshot 修改任意快照的权限
  alter any table 修改任意表的权限
  alter any trigger 修改任意触发器的权限
  alter cluster 修改拥有簇的权限
  alter database 修改数据库的权限
  alter procedure 修改拥有的存储过程权限
  alter profile 修改资源限制简表的权限
  alter resource cost 设置佳话资源开销的权限
  alter rollback segment 修改回滚段的权限
  alter sequence 修改拥有的序列权限
  alter session 修改数据库会话的权限
  alter sytem 修改数据库服务器设置的权限
  alter table 修改拥有的表权限
  alter tablespace 修改表空间的权限
  alter user 修改用户的权限
  analyze 使用analyze命令分析数据库中任意的表、索引和簇
  audit any 为任意的数据库对象设置审计选项
  audit system 允许系统操作审计
  backup any table 备份任意表的权限
  become user 切换用户状态的权限
  commit any table 提交表的权限
  create any cluster 为任意用户创建簇的权限
  create any index 为任意用户创建索引的权限
  create any procedure 为任意用户创建存储过程的权限
  create any sequence 为任意用户创建序列的权限
  create any snapshot 为任意用户创建快照的权限
  create any synonym 为任意用户创建同义名的权限
  create any table 为任意用户创建表的权限
  create any trigger 为任意用户创建触发器的权限
  create any view 为任意用户创建视图的权限
  create cluster 为用户创建簇的权限
  create database link 为用户创建的权限
  create procedure 为用户创建存储过程的权限
  create profile 创建资源限制简表的权限
  create public database link 创建公共数据库链路的权限
  create public synonym 创建公共同义名的权限
  create role 创建角色的权限
  create rollback segment 创建回滚段的权限
  create session 创建会话的权限
  create sequence 为用户创建序列的权限
  create snapshot 为用户创建快照的权限
  create synonym 为用户创建同义名的权限
  create table 为用户创建表的权限
  create tablespace 创建表空间的权限
  create user 创建用户的权限
  create view 为用户创建视图的权限
  delete any table 删除任意表行的权限
  delete any view 删除任意视图行的权限
  delete snapshot 删除快照中行的权限
  delete table 为用户删除表行的权限
  delete view 为用户删除视图行的权限
  drop any cluster 删除任意簇的权限
  drop any index 删除任意索引的权限
  drop any procedure 删除任意存储过程的权限
  drop any role 删除任意角色的权限
  drop any sequence 删除任意序列的权限
  drop any snapshot 删除任意快照的权限
  drop any synonym 删除任意同义名的权限
  drop any table 删除任意表的权限
  drop any trigger 删除任意触发器的权限
  drop any view 删除任意视图的权限
  drop profile 删除资源限制简表的权限
  drop public cluster 删除公共簇的权限
  drop public database link 删除公共数据链路的权限
  drop public synonym 删除公共同义名的权限
  drop rollback segment 删除回滚段的权限
  drop tablespace 删除表空间的权限
  drop user 删除用户的权限
  execute any procedure 执行任意存储过程的权限
  execute function 执行存储函数的权限
  execute package 执行存储包的权限
  execute procedure 执行用户存储过程的权限
  force any transaction 管理未提交的任意事务的输出权限
  force transaction 管理未提交的用户事务的输出权限
  grant any privilege 授予任意系统特权的权限
  grant any role 授予任意角色的权限
  index table 给表加索引的权限
  insert any table 向任意表中插入行的权限
  insert snapshot 向快照中插入行的权限
  insert table 向用户表中插入行的权限
  insert view 向用户视图中插行的权限
  lock any table 给任意表加锁的权限
  manager tablespace 管理(备份可用性)表空间的权限
  references table 参考表的权限
  restricted session 创建有限制的数据库会话的权限
  select any sequence 使用任意序列的权限
  select any table 使用任意表的权限
  select snapshot 使用快照的权限
  select sequence 使用用户序列的权限
  select table 使用用户表的权限
  select view 使用视图的权限
  unlimited tablespace 对表空间大小不加限制的权限
  update any table 修改任意表中行的权限
  update snapshot 修改快照中行的权限
  update table 修改用户表中的行的权限
  update view 修改视图中行的权限
    enqueue any queue 就是向所有队列中加入消息的权限;
    dequeue any queue 就是可以向所有队列使消息出队的权限;
    manage any queue 就是在所有所有方案下,允许运行DBMS_AQADM的权限

1.查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users;
2.查看用户或角色系统权限:
select * from dba_sys_privs;
select * from user_sys_privs;
3.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用户或角色所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;

6.注意:

(1)以下语句可以查看Oracle提供的系统权限

select name from sys.system_privilege_map

(2)查看一个用户的所有系统权限(包含角色的系统权限)

select privilege from dba_sys_privs where grantee='USER_NAME'
union
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='USER_NAME' );
 (oracle权限设置详解)http://www.cnblogs.com/BeautyOfCode/archive/2010/09/22/1832908.html

Oracle权限

一、概述

这一部分我们主要看看Oracle如何管理权限和角色,权限和角色的区别在哪里。

当刚刚建立用户时,用户没有任何权限,也不能执行任何操作。如果要执行某种特定的数据库操作,则必须为其授予系统的权限。如果用户要访问其他方案的对象,则必须为其授予对象的权限,为了简化权限的管理,可以使用角色。这里我们会详细介绍。

 

二、权限

权限是指执行特定类型的Sql命令或是访问其他方案对象的权利,包括系统权限和对象权限。

1、系统权限

A、系统权限的介绍

系统权限是指执行特定类型Sql命令的权利,它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有create table权限是,可以在其方案中建表,当用户具有create any table权限时,可以在任何方案中建表。Oracle提供了100多种系统权限。

常用的有

create session

连接数据库

create view

创建视图

create procedure

创建过程、函数、包

create cluster

建簇

create table

创建表

create public synonym

创建同义词

create trigger

创建触发器

 

B、显示系统权限

Oracle提供了100多种系统权限,而且Oracle的版本越高,提供的系统权限就越多,我们可以查询数据字典视图system_privilege_map,可以显示所有系统权限。

sql>select * from system_privilege_map order by name;

 

三、授予系统权限

一般情况,授予系统权限是有dba完成的,如果用其他用户来授予系统权限,则要求该用户必须具有grant any privilege的系统权限在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将该系统权限授予其他的用户或是角色。

案例:

1、创建两个用户ken,tom,初始阶段他们没有任何权限,如果登录就会给出错误信息。

sql>create user ken identified by m123;

sql>create user tom identified by m123;

 

2、给用户ken授权

sql>grant create session,create table to ken with admin option;

sql>grant create view to ken;

 

3、给用户tom授权

我们可以通过ken给tom授权,因为with admin option是加上的。当然也可以通过DBA给tom授权,我们就用ken给tom授权。

sql>grant create session,create table to tom with admin option;

sql>grant create view to tom;——这个是不可以的,因为Ken没有该权限的下放权限。

 

四、回收系统权限

一般情况下,回收系统权限是dba来完成的,如果其他的用户来回收系统权限,要求该用户必须具有相应系统权限及转授系统权限的选项(with admin option)。回收系统权限使用revoke来完成。

当回收了系统权限后,用户就不能执行相应的操作了,但是请注意,系统权限不是级联回收的。

执行以下语句:

sql>revoke create session from ken;

说明:DBA执行了该语句后回收了Ken的登录权限后,Ken自然就不能再登录了,有Ken下放的该权限所有者tom还是可以正常登录的。

 

五、对象权限

指访问其他方案对象的权利,用户可以直接访问自己方案的对象。但是如果要访问别的方案的对象,则必须具有对象的权限。比如Smith用户要访问scott.emp表(scott:方案,emp:表),则必须在scott.emp表上具有对象的权限。

常用的有:

alter

修改表结构

delete

删除数据

select

查询数据

insert

添加数据

update

修改数据

index

在表上建立索引

references

引用

execute

执行

 

1、显示对象权限

通过数据字典视图可以显示用户或是角色所具有的对象权限。视图为dba_tab_privs

sql>select distinct privilege from dba_tab_privs;

sql>select grantor,owner,table_name,privilege from dba_tab_privs where grantee='Black';

 

2、传授对象权限

对象权限可以授予用户、角色和public。在授予对象权限是,如果带有with grant option选项,则可以将该权限转授给其他用户,但是要注意with grant option选项不能被授予角色。

1、monkey用户要操作scott.emp表,则必须授予相应的对象权限

希望monkey可以查询scott.emp表的数据,怎么操作

sql>grant select on emp to monkey;

希望monkey可以修改scott.emp表的数据,怎么操作

sql>grant update on emp to monkey;

希望monkey可以删除scott,emp表的数据,怎么操作

sql>grant delete on emp to monkey;

有没有更加简单的方法,一次吧所有的权限赋给monkey

sql>grant all on emp to monkey;

 

2、能否对monkey访问权限更加精细控制。(授予列权限)

希望monkey只可以修改scott.emp的表的sal字段,怎样操作

sql>grant update on emp(sal) to monkey;

希望monkey只可查询scott.emp的表的ename,sal数据,怎样操作

sql>grant select on emp(ename,sal) to monkey;

 

3、授予alter权限

如果monkey用户要修改scott.emp表的结构,则必须授予alter对象权限

sql>grant alter on emp to monkey;

当然也可以用sys,system来完成这件事。

 

4、授予execute权限

如果用户想要执行其他方案的包/过程/函数,则需要有execute权限。

比如为了让Ken可以执行包abms_transaction,可以授予execute权限。

sql>grant execute on dbms_transaction to ken;

 

5、授予index权限

如果想要在别的方案的表上建立索引,则必须要具有index对象权限

如为了让Ken可以在scott.emp表上建立索引,就给其index的对象权限

sql>grant index on scott.emp to ken;

 

6、使用with grant option选项

该选项用于传授对象权限,但是该选项只能被授予用户,而不能授予角色。

sql>grant select on emp to ken with grant option;

 

7、回收对象权限

在Oracle中,收回对象的权限可以由对象的所有者来完成。

这里要说明的是:收回对象权限后,用户就不能执行相应的sql命令,但是要注意的是对象的权限是会被级联回收的。

sql>revoke select on emp from ken;

说明:Scott执行了该语句后,就回收了Ken用户在emp表上查询权限,因此此时ken已经不能对scott.emp进行查询操作了。于此同时也收回了ken转授下去的该权限,有ken授予的对scott.emp表查询的权限的获得者也不能对scott.emp进行查询操作了。

 

系统权限不级联回收

对象权限级联回收

猜你喜欢

转载自javaeedevelop.iteye.com/blog/1542177