管理权限和角色

系统权限

create session连接数据库

create table  建表

create view  建视图

create public synonym建同义词

create procedure建过程、函数、包

create trigger建触发器

create cluster建簇

 

显示系统权限 查询system_privilege_map

select * from system_privilege_map order by name;


授予系统权限

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

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

create user ken identified by ken;


ken授权
grant create session,create table to ken with admin option;

grant create view to ken;


tom授权

可以通过kentom授权,因为with admin option是加上的。

也可以通过dbatom授权,我们用kentom授权

grant create session,create table to tom;

grant create view to tom;   ok吗?【不ok

 

回收系统权限

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

当回收了系统权限后,用户就不能执行相应的操作了,注意系统权限级联收回问题?【不级联回收】

system----------------------àken--------------------------àtom

(create session)    (create session)         (create session)

system执行如下操作:

revoke create session from ken; 请思考tom还能登陆吗? 

 

对象权限

访问其他方案对象的权力,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。

比如smith要访问sott.empscott:方案,emp:表)

则必须在scott.emp表上具有对象的权限。

常用的有:

alter delete   select   insert update  index  references execute

 

显示对象权限

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

conn system/xiaobao;

select distinct privilege from dba_tab_privs;

select grantor,owner,table_name,privilege from dba_tab_privs where grantee=’BLAKE’;

 

授予对象权限

    从oracle 9i开始,dba用户(syssystem)可以将任何对象上的对象权限授予其它用户。

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

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

希望monkey可以查询scott.emp表的数据

grant select on emp to monkey;

希望monkey可以修改scott.emp表数据

grant update on emp to monkey;

希望monkey可以删除scott.emp表数据

grant delete on emp to monkey;

一次把所有权限付给monkey

grant all on emp to monkey;

2.能否对monkey访问权限更加精细控制

希望monkey只可修改scott.emp表的sal字段

grant update on emp(sal) to monkey;

希望monkey只可查询scott.emp表的enamesal数据

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

3.授予alter权限

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

conn scott/tiger;

grant alter on emp to blake;

当然也可以用systemsys来完成这件事

4.授予execute权限

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

比如为了让ken可以执行包dbms_transaction,可以授execute权限

conn system/xiaobao

grant execute on dbms_transaction to ken;

5.授予index权限

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

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

conn scott/tiger;

grant index on scott.emp to blake;

6.使用with grant option

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

conn scott/tiger;

grant select on emp to blake with grant option;;

conn blake/tiger;

grant select on scott.emp to jones;

 

回收对象权限

    在oracle9i中,收回对象权限可以由对象的所有者来完成,也可以用dba用户(syssystem)来完成收回对象权限后,用户就不能执行相应的sql命令,但要注意的是对象的全乡是否会被级联收回?【级联收回】

如:

scott---------------------àblake------------------------------àjones

select on emp      select on emp             select on emp

 

conn scott/tiger;

revoke select on emp from blake;

 

角色

就是相关权限命令集合,使用角色的主要目的是为了简化权限的管理,假定有用户a,b,c为了让他们都拥有权限:连接数据库;在scott.emp表上select,insert,update

简化:首先将create session,select on scott.emp,insert on scott.emp,update on scott.emp授予角色,然后将该角色授予abc用户,这样就可以三次授权搞定。

角色分为预定义和自定义角色两类:

 

预定义角色  oracle所提供的角色,每种角色都用于执行一些特定的管理任务,下面介绍常用的预定义角色connectresourcedba

 

connect角色

具有一般应用开发人员需要的大部分权限,当建立了一个用户后,多数情况下,只要给用户授予connectresource角色就够了,那么connect角色具有哪些系统权限呢?

alter session; create cluster; create database link; create session; create table; create vies; create sequence;

 

resource角色

具有应用开发人员所需要的其它权限,比如建立存储过程,触发器等。要注意的是resource角色隐含了unlimited tablespace系统权限

create cluster; create indestype; create table; create sequence; create type; create procedure; create trigger;

 

dba角色

具有所有的系统权限,及with admin option选项,默认的dba用户为syssystem,他们可以将任何系统权限授予其它用户。但要注意的是dba较深色不具备sysdbasysoper的特权(启动和关闭数据库);

 

自定义角色

根据自己的需要来定义。一般是dba来建立,如果用的别的用户来建立,则需要具有create role的系统权限。在建立角色时可以指定验证方式(不验证,数据库验证等)

1.      建立角色(不验证)

如果角色时公用的角色,可以采用不验证的方式建立角色

create role角色名 not identified;

2.      建立角色(数据库验证)

采用这样的方式时,角色名、口令存放在数据库中。当激活该角色时,必须提供口令。在建立这种角色时,需要为其提供口令

create role角色名 identified by tiger;

 

角色授权

当建立角色时,角色没有任何权限,为了使角色完成特定任务,必须为其授予相应的系统权限和对象权限。

1.      给角色授权

给角色授权和给用户授权没有太多区别,但要注意,系统权限的unlimited tablespace和对象权限的with grant option选项是不能授予角色的

conn system/xiaobao;

grant create session to角色名 with admin option;

conn scott/tiger;

grant select on emp to角色名;

grant insert,update,delete on emp to角色名;

通过上面的步骤,就给角色授权了。

2.      分配角色给某个用户

一般分配角色是由dba来完成的,如果要以其它用户身份分配角色,则要求用户具有grant any role的系统权限

conn system/xiaobao;

grant角色名 to blake with admin option;

由于给了with admin optionblake可以把system分配给它的角色分配给别的用户。

 

删除角色

使用drop role,一般是dba来执行,如用其它用户则要求该用户具有drop any role系统权限

conn system/xiaobao;

drop role角色名;

如果角色被删除,那么along是否还可以登录?

 

显示角色

1.      显示所有角色

select * from dba_roles;

2.      显示角色具有的系统权限

select privilege,admin_option fro role_sys_privs where role=’角色名’;

3.      显示角色具有的对象权限

通过查询数据字典视图dba_tab_privs

4.      显示用户具有的角色及默认角色

当以用户的身份连接到数据库时,oracle会自动激活默认的角色,通过查询数据字典视图dba_role_privs可以显示某个用户的所有角色及当前默认的角色

select granted_role,default_role from dba_role_privs where grantee=’角色名’;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值