Oracle Grant / REVOKE

joyleeLyhua 2011-08-15

GRANT

名称

GRANT — 赋予一个用户,一个组或所有用户访问权限

GRANT privilege [, ...] ON object [, ...]    TO { PUBLIC | GROUP group | username }

输入

privilege

可能的权限有:

SELECT

访问声明的表/视图的所有列/字段.

INSERT

向声明的表中插入所有列字段.

UPDATE

更新声明的所有列/字段.

DELETE

从声明的表中删除所有行.

RULE

在表/视图上定义规则(参见CREATERULE语句).

ALL

赋予所有权限.

object

赋予权限的对象名.可能的对象是:

table(表)

view(视图)

sequence(序列)

index(索引)

PUBLIC

代表是所有用户的简写.

GROUPgroup

将要赋予权限的组group.目前的版本中,组必须是用下面方法显式创建的.

username

将要赋予权限的用户名.PUBLIC是代表所有用户的简写.

输出

CHANGE

如果成功,返回此信息.

ERROR:ChangeAcl:class"object"notfound

如果所声明的对象不可用或不可能对声明的组或用户赋予权限.

描述

GRANT 允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限.对象创建后,除了创建者外,除非创建者赋予(GRANT)权限,其他人没有访问对象的权限.

一旦用户有某对象的权限,他就可以使用那个特权.不需要给创建者赋予(GRANT)对象的权限,创建者自动拥有对象的所有权限,包括删除它的权限.

注意目前,要想在 Postgres 里面只赋予几列权限,你必须创建一个包含那几列的视图(view),然后把权限赋予那几个视图。

使用 psql \z 命令获取关于现存对象权限的更多信息:

Database    = lusitania   +------------------+---------------------------------------------+   |  Relation        |        Grant/Revoke Permissions             |   +------------------+---------------------------------------------+   | mytable          | {"=rw","miriam=arwR","group todos=rw"}      |   +------------------+---------------------------------------------+   Legend:         uname=arwR -- privileges granted to a user   group gname=arwR -- privileges granted to a GROUP              =arwR -- privileges granted to PUBLIC                  r -- SELECT                  w -- UPDATE/DELETE                  a -- INSERT                  R -- RULE               arwR -- ALL小技巧: 目前,要创建一个 GROUP (组), 你将不得不手工向表 pg_group 中插入数据,像:

INSERT INTO pg_group VALUES ('todos');CREATE USER miriam IN GROUP todos;参考 REVOKE 语句重新分配访问权限.

用法给所有用户向表 films 插入记录的权限:

GRANT INSERT ON films TO PUBLIC;赋予用户 manuel 操作视图 kinds 的所有权限:

GRANT ALL ON kinds TO manuel;

兼容性

SQL92

SQL92 GRANT 语法允许对表中的某单独列/字段设置权限,并且允许设置一权限以赋予别人相同权限.

GRANT privilege [, ...]    ON object [ ( column [, ...] ) ] [, ...]    TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]这些字段与 Postgres 实现是兼容的,除了下面一些例外:

privilege 

SQL92允许声明附加的权限:

SELECT

 

REFERENCES

允许在一个声明的表的整合约束中使用某些或全部列/字段.

USAGE

允许使用一个域,字符集,集合或事务.如果声明的对象不是表/视图,privilege只能声明为USAGE.

object

[TABLE]table

SQL92允许一个附加的非函数关键字TABLE.

CHARACTERSET

允许使用声明的字符集.

COLLATION

允许使用声明的集合序列.

TRANSLATION

允许使用声明的字符集转换.

DOMAIN

允许使用声明的域.

WITHGRANTOPTION

允许向别人赋予同样权限.

**************************************************************************************************************************

我以scott/tiger登录以后建立了表以后插入数据提示我插入成功了,但是在查询数据的时候是没有记录的,原因是我的scott用户没有对这个表插入的权限。这时要以system登录以后用grant赋予scottr 中某个表的相应的权限。

GRANT

名称

GRANT— 赋予一个用户,一个组或所有用户访问权限

GRANT privilege [, ...] ON object [, ...]    TO { PUBLIC | GROUP group | username } 

输入

privilege

可能的权限有:

SELECT

访问声明的表/视图的所有列/字段.

INSERT

向声明的表中插入所有列字段.

UPDATE

更新声明的所有列/字段.

DELETE

从声明的表中删除所有行.

RULE

在表/视图上定义规则(参见CREATERULE语句).

ALL

赋予所有权限.

object

赋予权限的对象名.可能的对象是:

table(表)

view(视图)

sequence(序列)

index(索引)

PUBLIC

代表是所有用户的简写.

GROUPgroup

将要赋予权限的组group.目前的版本中,组必须是用下面方法显式创建的.

username

将要赋予权限的用户名.PUBLIC是代表所有用户的简写.

输出

CHANGE

如果成功,返回此信息.

ERROR:ChangeAcl:class"object"notfound

如果所声明的对象不可用或不可能对声明的组或用户赋予权限.

描述

GRANT允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限.对象创建后,除了创建者外,除非创建者赋予(GRANT)权限,其他人没有访问对象的权限.

一旦用户有某对象的权限,他就可以使用那个特权.不需要给创建者赋予(GRANT)对象的权限,创建者自动拥有对象

------------------注明:

、权限是用户对一项功能的执行权力。在Oracle 中,根据系统管理方式不同,将权限分为系统权限 与实体权限 两类。

系统权限 是指是否被授权用户可以连接到数据库上,在数据库中可以进行哪些系统操作。

实体权限 是指用户对具体的模式实体 (schema)所拥有的权限。这样讲可以有些模糊。

举个例子来说:select any table是系统权限,它表示可以查看任何表。而select on table1是实体权限,表示对表table1的查询权限。

二、见下下面的表

三、系统权限授权命令的使用

语法:

GRANT权限名TO 用户|角色|PUBLIC

其中,PUBLIC表示将权限赋给数据库中所有的用户

例:赋给用户USER1权限CREATETABLE的授权命令如下:

SQL>GRANTCREATETABLETOUSER1;

授权语句还可以增加WITHADMINOPTION选项,表示被授权的用户可以将它所得权限赋给其它用户,如:

SQL>GRANTCREATETABLE,CREATEVIEWTOUSER1,USER2WITHADMINOPTION;

若要了解各用户所拥有的系统权限,可以查询数据字典USER_SYS_PRIVS、ROLE_SYS_PRIVS。

若要回收权限,则使用REVOKE命令,如:

SQL>REVOKE CREATE TABLE FROM USER1;

四、实体权限管理 

实体权限是指某一用户对某一特定schema对象的操作权限。

1.实体权限分类

  不同的实体类型有不同的实体权限,如下表

2.实体权限的授命令

语法如下:

GRANT实体权限名|ALLTO用户|角色|PUBLIC

其中,ALL表示实体的所有实体权限。

如:

SQL>GRANTSELECTONBOOKS_QUTHORSTOUSER1;

以下语句用来查询表的实体权限的授权信息:

SQL>SELECT*FROMUSER_TAB_PRIVES

若要回收实体权限,使用REVOKE,其语法如下:

REVOKE 实体权限名|ALL ON 实体名 FROM 用户名|角色名|PUBLIC。

      alter any cluster 修改任意簇的权限 

alteranyindex修改任意索引的权限

alteranyrole修改任意角色的权限alteranycluster

alteranysequence修改任意序列的权限

alteranysnapshot修改任意快照的权限

alteranytable修改任意表的权限

alteranytrigger修改任意触发器的权限

altercluster修改拥有簇的权限

alterdatabase修改数据库的权限

alterprocedure修改拥有的存储过程权限

alterprofile修改资源限制简表的权限

alterresourcecost设置佳话资源开销的权限

alterrollbacksegment修改回滚段的权限

altersequence修改拥有的序列权限

altersession修改数据库会话的权限

altersytem修改数据库服务器设置的权限

altertable修改拥有的表权限

altertablespace修改表空间的权限

alteruser修改用户的权限

analyze使用analyze命令分析数据库中任意的表、索引和簇

auditany为任意的数据库对象设置审计选项

auditsystem允许系统操作审计

backupanytable备份任意表的权限

becomeuser切换用户状态的权限

commitanytable提交表的权限

createanycluster为任意用户创建簇的权限

createanyindex为任意用户创建索引的权限

createanyprocedure为任意用户创建存储过程的权限

createanysequence为任意用户创建序列的权限

createanysnapshot为任意用户创建快照的权限

createanysynonym为任意用户创建同义名的权限

createanytable为任意用户创建表的权限

createanytrigger为任意用户创建触发器的权限

createanyview为任意用户创建视图的权限

createcluster为用户创建簇的权限

createdatabaselink为用户创建的权限

createprocedure为用户创建存储过程的权限

createprofile创建资源限制简表的权限

createpublicdatabaselink创建公共数据库链路的权限

createpublicsynonym创建公共同义名的权限

createrole创建角色的权限

createrollbacksegment创建回滚段的权限

createsession创建会话的权限

createsequence为用户创建序列的权限

createsnapshot为用户创建快照的权限

createsynonym为用户创建同义名的权限

createtable为用户创建表的权限

createtablespace创建表空间的权限

createuser创建用户的权限

createview为用户创建视图的权限

deleteanytable删除任意表行的权限

deleteanyview删除任意视图行的权限

deletesnapshot删除快照中行的权限

deletetable为用户删除表行的权限

deleteview为用户删除视图行的权限

dropanycluster删除任意簇的权限

dropanyindex删除任意索引的权限

dropanyprocedure删除任意存储过程的权限

dropanyrole删除任意角色的权限

dropanysequence删除任意序列的权限

dropanysnapshot删除任意快照的权限

dropanysynonym删除任意同义名的权限

dropanytable删除任意表的权限

dropanytrigger删除任意触发器的权限

dropanyview删除任意视图的权限

dropprofile删除资源限制简表的权限

droppubliccluster删除公共簇的权限

droppublicdatabaselink删除公共数据链路的权限

droppublicsynonym删除公共同义名的权限

droprollbacksegment删除回滚段的权限

droptablespace删除表空间的权限

dropuser删除用户的权限

executeanyprocedure执行任意存储过程的权限

executefunction执行存储函数的权限

executepackage执行存储包的权限

executeprocedure执行用户存储过程的权限

forceanytransaction管理未提交的任意事务的输出权限

forcetransaction管理未提交的用户事务的输出权限

grantanyprivilege授予任意系统特权的权限

grantanyrole授予任意角色的权限

indextable给表加索引的权限

insertanytable向任意表中插入行的权限

insertsnapshot向快照中插入行的权限

inserttable向用户表中插入行的权限

insertview向用户视图中插行的权限

lockanytable给任意表加锁的权限

managertablespace管理(备份可用性)表空间的权限

referencestable参考表的权限

restrictedsession创建有限制的数据库会话的权限

selectanysequence使用任意序列的权限

selectanytable使用任意表的权限

selectsnapshot使用快照的权限

selectsequence使用用户序列的权限

selecttable使用用户表的权限

selectview使用视图的权限

unlimitedtablespace对表空间大小不加限制的权限

updateanytable修改任意表中行的权限

updatesnapshot修改快照中行的权限

updatetable修改用户表中的行的权限

updateview修改视图中行的权限

相关推荐