授予和撤销权限
没权限,用户不能做任何操作,甚至无法成功连接. 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;
没权限,用户不能做任何操作,甚至无法成功连接. 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/