oracle两种权限,oracle 权限详解(转)

Oracle的权限主要包括角色权限Role

privileges、系统权限System privileges和对象权限Object privileges。

一、角色权限角色是一组权限的集合将角色赋给用户那这个用户就拥有这个角色包含的权限。在数据库安装后系统会自动创建一些常用的角色

下面简单介绍一下这些预定义角色

角色所包含的权限可以用语句来查询 select * from

role_sys_privs where role='角色名';

1.CONNECT, RESOURCE, DBA

这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。

DBA: 拥有全部特权是系统最高角色权限只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource角色权限的用户只可以创建实体不可以创建数据库结构。

CONNECT:拥有Connect角色权限的用户只可以登录Oracle不可以创建实体不可以创建数据库结构。对于普通用户授予connect,

resource角色权限。 对于DBA管理用户授予connectresource, dba角色权限。

2.DELETE_CATALOG_ROLEEXECUTE_CATALOG_ROLESELECT_CATALOG_ROLE 这些角色主要用于访问数据字典视图和包。

3.EXP_FULL_DATABASEIMP_FULL_DATABASE 这两个角色用于数据导入导出工具的使用。

4.AQ_USER_ROLEAQ_ADMINISTRATOR_ROLE 这两个角色用于oracle高级查询功能。

5.SNMPAGENT 用于oracle

enterprise manager和Intelligent Agent

6.RECOVERY_CATALOG_OWNER 用于创建拥有恢复库的用户。

7.HS_ADMIN_ROLE

异构服务需要这个角色去访问数据字典中的表。.

补充管理角色权限

1.建一个角色 sql>create role role1;

2.授予权限给角色 sql>grant create any table,create procedure to

role1;

3.授予角色给用户 sql>grant role1 to user1;

4.查看角色所包含的权限 sql>select * from

role_sys_privs;

5.创建带有口令以角色(在生效带有口令的角色时必须提供口令) sql>create role role1 identified by

password1;

6.修改角色是否需要口令 sql>alter role role1 not identified;

sql>alter role role1

identified by password1;

7.设置当前用户要生效的角色 (注角色的生效是一个什么概念呢假设用户a有b1,b2,b3三个角色那么如果b1未生效则b1所包含的权限对于a来讲是不拥有的只有角色生效了角色内的权限才作用于用户最大可生效角色数由参数MAX_ENABLED_ROLES设定在用户登录后oracle将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。

sql>set role

role1;//使role1生效

sql>set role

role1,role2;//使role1,role2生效

sql>set role role1

identified by password1;//使用带有口令的role1生效

sql>set role

all;//使用该用户的所有角色生效

sql>set role

none;//设置所有角色失效

sql>set role all except

role1;//除role1外的该用户的所有其它角色生效。

sql>select * from

SESSION_ROLES;//查看当前用户的生效的角色。

8.修改指定用户设置其默认角色 sql>alter user user1 default role

role1; sql>alter user user1

default role all except role1;

9.删除角色 sql>drop role role1; 角色删除后原来拥用该角色的用户就不再拥有该角色了相应的权限也就没有了。

说明: 1)无法使用WITH GRANT

OPTION为角色授予对象权限

2)可以使用WITH ADMIN OPTION

为角色授予系统权限,取消时不是级联

二、系统权限

所谓系统权限就是oracle里已经写死的权限这些权限我们是不能自己去扩展的已经在oracle里全部规定好了我们可以通过查看system_privilege_map这个数据字典表来查看所有的oracle系统内置的权限。

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' );

三、对象权限

下面我们看看对象权限object permission

这里是针对于特定的对象的权限系统权限是限定了可以操作的功能而object

permission就更细化了具体到了莫个对象你可以操作的功能的权限 比如A用户建立了一个TableA表现在为了让B用户可以看到A这个对象我们就可以把A.table的select权限进行赋予。这里的A.table上的select权限就是一个对象权限。除了select还有updatedeleteinsertalterdropindexreferences这样针对对象的权限。除了可以给表对象指定对象权限外viewsequenceprocedurefunctionpackagetrigggerMV等这些oracle里的对象都可以进行对象的权限指定。对于对象权限来说由于对象权限完全是动态的在对一个对象进行grant的时候才能看到具体的对象权限所以对象权限是不像system

privilege那样有一个表来描述的只有一个表来记录用户和这个用户对于的对象权限的关系表。这个表就是dba_tab_privs;这里这个名字比较容易让人误会为只有table的对象权限其实不然这里其他类型的对象的对象权限也会记录进来。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值