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