基础知识6——授予和撤销权限

本文详细介绍了Oracle数据库中的权限管理,包括系统权限与对象权限的概念、常见权限类型及其授予和撤销的方法。通过具体示例展示了如何为用户分配权限以及权限级联的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

授予和撤销权限

没权限,用户不能做任何操作,甚至无法成功连接.  grant授权,revoke撤销权限.

权限有两种:系统权限和对象权限,前者通常允许用户执行影响数据字典的操作,后者允许用户执行影响数据的操作.


系统权限
大概200多种,大多数应用于影响数据字典的操作,比如创建表,用户,影响实例或数据库的,创建表空间,调整实例参数,建立会话,常用的权限如下:

创建会话(create session)   --允许用户进行连接.
受限制的会话(restricted session)  --如果使用startup restrict启动数据库,或使用alter system enable restricted session进行调整,则 仅拥有此权限的用户可以联接.
更改数据库(alter database)   --允许访问多个修改物理结构所需的命令.
更改系统(alter system)  --允许控制实例参数和内存结构
创建表空间(create tablespace)    --alter tablespace和drop tablespace权限允许用户管理表空间
创建表(create table)   --允许用户在自己的模式中创建表,更改和删除表,执行select,DML,创建更改或删除index.


授予任何对象权限(grant any object privilege)    允许用户将自己没有的对象的对象权限授予他人,但不能授予自己.
创建任何表(create any table) 被授权人可以创建属于其他用户的表.

删除任何表(drop any table) 可以删除属于其他用户的表
插入,更新,删除任何表(insert any table,update any table,delete any table) 可以对所有其他用户的表执行这些DML.
选择任何表(select any table) 可以对数据库中任何表执行select操作.


授予权限的语法:

GRANT privilege [ ,privilege... ] TO username;

一般创建用户后给予以下常用系统权限:

grant create session,alter session,create table,create view,create synonym,
create cluster,create database link,create sequence,create trigger,create type,
create procedure,,create operator to username;


以上权限允许用户连接和配置会话,创建存储数据的对象和PL/SQL对象.这些对象存在于其模式中,用户不拥有针对其他任何模式的权限.
对象的创建将受到为其分配(或未分配)的针对各个表空间的配额的限制. 

此语法的一个变体允许被授权人将权限传递给第三方,例子:

connect system/pwd

grant create table to scott with admin option;

connect scott/tiger

grant create table to bob;

给予scott在自己的模式下创建表的能力,也给予scott将创建表的权利给予bob


如果从用户撤销权限,用户创建的表会不变,如果用户A被授予带有admin option的权限,那么即使做了撤销,A授予了权限 的用户B也将保留权限,不保存系统权限授予者的记录,所以不存在撤销级联.

系统权限的撤销不会级联(与撤销对象权限不用),要牢记!

any权限针对数据库中所有相关对象,比如

grant select any table to scott


将允许scott查询每个模式中的每个表,轻易不要将any权限授予用户.而且any权限针对数据库中的每个用户账户的每个对象进行授权, 因此是系统权限而不是对象权限.




对象权限

对象权限允许针对表和相关对象执行select,insert,update,delete命令,也允许执行PL/SQL对象,如果用户有create table权限,就
可以对表执行select和DML操作,而不需要获得更多权限.


对象权限适用于不同类型的对象


语法如下:

GRANT privilege ON [ schema. ] object TO username [ WITH GRANT OPTION ];

比如:

grant selec on store.customers to scott;

变化包括使用all,及命名视图或表的特定列:

grant select on store.orders to scott;

grant update (order_status) on store.orders to scott;

grant all on store.regions to scott;


此代码将允许scott查询store模式中的orders表的所有列,但只能对order_status列执行写操作.此后scott被给予store的regions表的 所有对象权限(select和DML)

使用with grant option,可使用户将其对象权限传给其它用户,oracle保留着对象权限授予谁的记录,所以会产生级联效应.

connect store/pwd

grant select on customers to sales with grant option;

connect sales/pwd

grant select on store.customers to webapp with grant option;

connect webapp/pwd

grant select on store.customers to scott;

connect store/pwd

revoke select on customers from sales;

最后的结果是sales,wdbapp和scott都没了针对store.customers的select权限.

对象权限的撤销会产生级联效应(这与系统权限的撤销不同)






练习时间,为一些用户授予一些权限

用system登录为sales授予create session权限

grant create session to sales;

另开一个plus,用sales连接,能连上但无法创建表

system会话中授予sales权限create table

grant create table to sales;

再创建表还会报错,因为没配额

system中为sales分配storedata表空间配额:

alter user sales quota 1m on storedata;

以sale的身份,在新表上授予对象权限:

grant all on t1 to webapp;

grant select on t1 to accounts;


使用plus检索信息,以system身份运行查询

select grantee,privilege,grantor,grantable from dba_tab_privs
where owner='SALES' and table_name='T1';

select * from dba_sys_privs 
where grantee='SALES';

撤销授予webapp和accounts的权限:

revoke all on sales.t1 from webapp;

revoke all on sales.t1 from accounts;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25025926/viewspace-1068076/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25025926/viewspace-1068076/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值