您的位置:首页 > 数据库 > Oracle

【oracle】系统权限、对象权限、角色

2014-05-30 15:08 323 查看
grant:授予权限
revoke:撤销权限
系统权限:允许用户执行影响数据字典操作
grant例子:
grant create session,create table to hxw1 with admin option;
revoke例子:
revoke create session,create table from hxw1;

对象权限:允许用户执行影响数据的操作
grant例子:grant select on scott.emp to hxw1;revoke例子:revoke select on scott.emp from hxw1;

角色:是一组系统权限和/或对象权限,可以作为一个单元来授予或撤销。
角色不是模式对象,前面不能加用户名。

/*系统权限*/

/*创建会话:允许用户进行连接*/
CREATE SESSION

/*更改数据库:允许访问多个修改物理结构所需的命令*/
ALTER database

/*更改系统:允许控制实例参数和内存结构*/
ALTER system

/*创建表空间、管理表空间*/
create tablespace
ALTER tablespace
drop tablespace

/*创建表 允许被授权人在自己的模式中创建表,包括更改和删除表*/
CREATE table

/*创建任何表*/
create any table

drop any table

insert any table

update any table

delete any table

select any table

/*授予系统权限的语法*/
grant privilege[,privilege....] to username;

/*例子:*/
grant CREATE SESSION ,ALTER SESSION,CREATE table,CREATE view to username;

/* with admin option:表示huangxuewen也可以把create table权限给别的用户*/
grant create table to huangxuewen with admin option;
conn huangxuewen/zerostudy
/*hxw168可以在自己的模式下创建表*/
grant create table to hxw168;

/*测试*/
SQL> create user hxw1 identified by zerostudy;
User created
SQL> grant create session,create table to hxw1 with admin option;
Grant succeeded

conn hxw1/zerostudy

SQL> create table h1( id number(2),sex char(4),name varchar2(32));
SQL> insert into h1 values(1,'nan','huangxuewen')
2 ;
insert into h1 values(1,'nan','huangxuewen')
*
第 1 行出现错误:
ORA-01950: 对表空间 'MYBASE' 无权限

原因:用户没有resource权限
SQL> grant resource to hxw1;
Grant succeeded

新建用户one1,并用hxw1授权create session ,create table给one1用户

收回hxw1的权限
SQL> revoke create session,create table from hxw1;
Revoke succeeded
SQL>

经过测试one1还保留create session , create table两个系统权限

带with admin option 可以把权限授给别人,huangxuewen授给hxw1时,hxw1也带有session权限,当huangxuewen权限被收回,hxw1的权限还保留有
grant create session to huangxuewen with admin option;

注意:带有admin option 的权限,即使这个用户的系统权限被收回,他授予了权限的任何用户将保留权限
。系统权限的撤销不会级联(与撤销对象权限不同)

对象权限:允许针对表和相关对象执行select insert update delete 命令,这些权限不存在于用户自己模式
的对象中。

权限 授权对象
select 表、视图、序列和同义词
insert 表、视图和同义词
update 表、视图和同义词
delete 表、视图和同义词
ALTER 表和序列
execute 过程、函数、包和同义词

语法如下:
grant privilege on [schema.]object to username [with grant option];

grant select on scott.emp to hxw1;
grant all on scott.emp to one1;

对象权限传递,使用with grant option,可使用户将其对象权限传给第三方,oracle保留着谁将什么样的
权限授予谁的记录。
对象撤销会级联(与系统权限撤销不同)

撤销权限
revoke select on scott.emp from hxw1;

角色:

角色是一组系统权限和/或对象权限,可以作为一个单元来授予或撤销。角色不是模式对象,前面不能
加用户名。

创建角色方法:
create role rolename;

create role myname;
grant create session to myname;
grant select on scott.emp to myname;

create role myname1; /*创建myname1角色,并把myname角色授予给myname1 带with admin option表示也可以授予给别人*/
grant myname to myname1 with admin option;
grant insert on scott.emp to myname1;

角色授给用户:
grant myname to hxw1;

角色创建:

SQL> create role myrole;
Role created
SQL> grant create session to myrole;
Grant succeeded
SQL> grant myrole to hxw1;
Grant succeeded
SQL> select * from dba_role_privs where grantee='HXW1';

GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
HXW1 RESOURCE NO YES
HXW1 MYROLE NO YES

/*查看用户拥有什么角色*/

select * from dba_role_privs where grantee='HXW1';

/*查看角色包含的系统权限*/
SQL> select grantee,privilege from dba_sys_privs where grantee='RESOURCE' order by privilege;

GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
RESOURCE CREATE CLUSTER
RESOURCE CREATE INDEXTYPE
RESOURCE CREATE OPERATOR
RESOURCE CREATE PROCEDURE
RESOURCE CREATE SEQUENCE
RESOURCE CREATE TABLE
RESOURCE CREATE TRIGGER
RESOURCE CREATE TYPE

本文出自 “尽管错,让我错到死!” 博客,请务必保留此出处http://hxw168.blog.51cto.com/8718136/1419971
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: