GRANT
名称
GRANT — 赋予一个用户,一个组或所有用户访问权限
GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }
输入
privilege
可能的权限有:
SELECT
访问声明的表/视图的所有列/字段.
INSERT
向声明的表中插入所有列字段.
UPDATE
更新声明的所有列/字段.
DELETE
从声明的表中删除所有行.
RULE
在表/视图上定义规则 (参见 CREATE RULE 语句).
ALL
赋予所有权限.
object
赋予权限的对象名.可能的对象是:
table (表)
view (视图)
sequence (序列)
index (索引)
PUBLIC
代表是所有用户的简写.
GROUP group
将要赋予权限的组 group .目前的版本中,组必须是用下面方法显式创建的.
username
将要赋予权限的用户名.PUBLIC 是代表所有用户的简写.
输出
CHANGE
如果成功,返回此信息.
ERROR: ChangeAcl: class "object" not found
如果所声明的对象不可用或不可能对声明的组或用户赋予权限.
描述
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.
CHARACTER SET
允许使用声明的字符集.
COLLATION
允许使用声明的集合序列.
TRANSLATION
允许使用声明的字符集转换.
DOMAIN
允许使用声明的域.
WITH GRANT OPTION
允许向别人赋予同样权限.
**************************************************************************************************************************
我以scott/tiger登录以后建立了表以后插入数据提示我插入成功了,但是在查询数据的时候是没有记录的,原因是我的scott用户没有对这个表插入的权限。这时要以system登录以后用grant赋予scottr 中某个表的相应的权限。
GRANT
名称
GRANT— 赋予一个用户,一个组或所有用户访问权限
GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }
输入
privilege
可能的权限有:
SELECT
访问声明的表/视图的所有列/字段.
INSERT
向声明的表中插入所有列字段.
UPDATE
更新声明的所有列/字段.
DELETE
从声明的表中删除所有行.
RULE
在表/视图上定义规则 (参见 CREATE RULE 语句).
ALL
赋予所有权限.
object
赋予权限的对象名.可能的对象是:
table (表)
view (视图)
sequence (序列)
index (索引)
PUBLIC
代表是所有用户的简写.
GROUP group
将要赋予权限的组 group .目前的版本中,组必须是用下面方法显式创建的.
username
将要赋予权限的用户名.PUBLIC 是代表所有用户的简写.
输出
CHANGE
如果成功,返回此信息.
ERROR: ChangeAcl: class "object" not found
如果所声明的对象不可用或不可能对声明的组或用户赋予权限.
描述
GRANT允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限.对象创建后,除了创建者外,除非创建者赋予(GRANT)权限,其他人没有访问对象的权限.
一旦用户有某对象的权限,他就可以使用那个特权.不需要给创建者赋予(GRANT)对象的权限,创建者自动拥有对象
------------------注明:
、权限是用户对一项功能的执行权力。在Oracle 中,根据系统管理方式不同,将权限分为系统权限 与实体权限 两类。
系统权限 是指是否被授权用户可以连接到数据库上,在数据库中可以进行哪些系统操作。
实体权限 是指用户对具体的模式实体 (schema)所拥有的权限。这样讲可以有些模糊。
举个例子来说:select any table是系统权限,它表示可以查看任何表。而select on table1是实体权限,表示对表table1的查询权限。
二、见下下面的表
三、系统权限授权命令的使用
语法:
GRANT 权限名 TO 用户|角色|PUBLIC
其中,PUBLIC表示将权限赋给数据库中所有的用户
例:赋给用户USER1权限CREATE TABLE的授权命令如下:
SQL>GRANT CREATE TABLE TO USER1;
授权语句还可以增加WITH ADMIN OPTION选项,表示被授权的用户可以将它所得权限赋给其它用户,如:
SQL>GRANT CREATE TABLE,CREATE VIEW TO USER1,USER2 WITH ADMIN OPTION;
若要了解各用户所拥有的系统权限,可以查询数据字典USER_SYS_PRIVS、ROLE_SYS_PRIVS。
若要回收权限,则使用REVOKE命令,如:
SQL>REVOKE CREATE TABLE FROM USER1;
四、实体权限管理
实体权限是指某一用户对某一特定schema对象的操作权限。
1.实体权限分类
不同的实体类型有不同的实体权限,如下表
2.实体权限的授命令
语法如下:
GRANT 实体权限名|ALL TO 用户|角色|PUBLIC
其中,ALL表示实体的所有实体权限。
如:
SQL>GRANT SELECT ON BOOKS_QUTHORS TO USER1;
以下语句用来查询表的实体权限的授权信息:
SQL>SELECT * FROM USER_TAB_PRIVES
若要回收实体权限,使用REVOKE,其语法如下:
REVOKE 实体权限名|ALL ON 实体名 FROM 用户名|角色名|PUBLIC。
alter any cluster 修改任意簇的权限
alter any index 修改任意索引的权限
alter any role 修改任意角色的权限 alter any cluster
alter any sequence 修改任意序列的权限
alter any snapshot 修改任意快照的权限
alter any table 修改任意表的权限
alter any trigger 修改任意触发器的权限
alter cluster 修改拥有簇的权限
alter database 修改数据库的权限
alter procedure 修改拥有的存储过程权限
alter profile 修改资源限制简表的权限
alter resource cost 设置佳话资源开销的权限
alter rollback segment 修改回滚段的权限
alter sequence 修改拥有的序列权限
alter session 修改数据库会话的权限
alter sytem 修改数据库服务器设置的权限
alter table 修改拥有的表权限
alter tablespace 修改表空间的权限
alter user 修改用户的权限
analyze 使用analyze命令分析数据库中任意的表、索引和簇
audit any 为任意的数据库对象设置审计选项
audit system 允许系统操作审计
backup any table 备份任意表的权限
become user 切换用户状态的权限
commit any table 提交表的权限
create any cluster 为任意用户创建簇的权限
create any index 为任意用户创建索引的权限
create any procedure 为任意用户创建存储过程的权限
create any sequence 为任意用户创建序列的权限
create any snapshot 为任意用户创建快照的权限
create any synonym 为任意用户创建同义名的权限
create any table 为任意用户创建表的权限
create any trigger 为任意用户创建触发器的权限
create any view 为任意用户创建视图的权限
create cluster 为用户创建簇的权限
create database link 为用户创建的权限
create procedure 为用户创建存储过程的权限
create profile 创建资源限制简表的权限
create public database link 创建公共数据库链路的权限
create public synonym 创建公共同义名的权限
create role 创建角色的权限
create rollback segment 创建回滚段的权限
create session 创建会话的权限
create sequence 为用户创建序列的权限
create snapshot 为用户创建快照的权限
create synonym 为用户创建同义名的权限
create table 为用户创建表的权限
create tablespace 创建表空间的权限
create user 创建用户的权限
create view 为用户创建视图的权限
delete any table 删除任意表行的权限
delete any view 删除任意视图行的权限
delete snapshot 删除快照中行的权限
delete table 为用户删除表行的权限
delete view 为用户删除视图行的权限
drop any cluster 删除任意簇的权限
drop any index 删除任意索引的权限
drop any procedure 删除任意存储过程的权限
drop any role 删除任意角色的权限
drop any sequence 删除任意序列的权限
drop any snapshot 删除任意快照的权限
drop any synonym 删除任意同义名的权限
drop any table 删除任意表的权限
drop any trigger 删除任意触发器的权限
drop any view 删除任意视图的权限
drop profile 删除资源限制简表的权限
drop public cluster 删除公共簇的权限
drop public database link 删除公共数据链路的权限
drop public synonym 删除公共同义名的权限
drop rollback segment 删除回滚段的权限
drop tablespace 删除表空间的权限
drop user 删除用户的权限
execute any procedure 执行任意存储过程的权限
execute function 执行存储函数的权限
execute package 执行存储包的权限
execute procedure 执行用户存储过程的权限
force any transaction 管理未提交的任意事务的输出权限
force transaction 管理未提交的用户事务的输出权限
grant any privilege 授予任意系统特权的权限
grant any role 授予任意角色的权限
index table 给表加索引的权限
insert any table 向任意表中插入行的权限
insert snapshot 向快照中插入行的权限
insert table 向用户表中插入行的权限
insert view 向用户视图中插行的权限
lock any table 给任意表加锁的权限
manager tablespace 管理(备份可用性)表空间的权限
references table 参考表的权限
restricted session 创建有限制的数据库会话的权限
select any sequence 使用任意序列的权限
select any table 使用任意表的权限
select snapshot 使用快照的权限
select sequence 使用用户序列的权限
select table 使用用户表的权限
select view 使用视图的权限
unlimited tablespace 对表空间大小不加限制的权限
update any table 修改任意表中行的权限
update snapshot 修改快照中行的权限
update table 修改用户表中的行的权限
update view 修改视图中行的权限
相关推荐
GRANT和REVOKE语句是SQL中用于控制用户访问数据库对象权限的关键工具。以下是对这两个语句的详细解释以及一些实际操作的例子。 1. GRANT语句: GRANT语句用于向用户或用户组授予特定的数据库操作权限。它的基本...
- `REVOKE`:撤销用户权限。 - `AUDIT`:记录审计信息。 - `GRANT`:授予用户权限。 - `ROLLBACK`:回滚事务。 - `COMMIT`:提交事务。 - `INSERT`:插入新行到表中。 - `SELECT`:从表中检索数据。 - `LOCK...
- DCL(Data Control Language): 用于控制数据库用户的权限,如GRANT, REVOKE等。 - DQL(Data Query Language): 用于查询数据,主要指SELECT语句。 #### 八、游标 - **概念**: 游标是一种内存区域,用于保存...
可以使用GRANT和REVOKE语句分配和撤销权限,以确保数据的安全性。 九、性能优化 通过绑定变量、使用索引、避免全表扫描、合理设计存储过程和函数,可以显著提升PL/SQL代码的运行效率。此外,分析和调整SQL语句也是...
4. DCL基础:DCL语句主要用于权限管理和用户控制,如GRANT和REVOKE。 5. TL基础:虽然在内容中未详细展开,但通常包括COMMIT、ROLLBACK和SAVEPOINT等事务管理语句。 在DML基础部分,还详细讲解了算术和关系运算符...
GRANT 和 REVOKE 命令的使用和权限管理 在 Oracle 中,权限是用户对一项功能的执行权力。根据系统管理方式不同,将权限分为系统权限和实体权限两类。系统权限是指是否被授权用户可以连接到数据库上,在数据库中可以...
Les13 : 控制用户权限[CREATE USER /GRANT / REVOKE ] Les14 : 无 Les15 : SET 运算符 Les16 : Oracle9i 日期函数 Les17 : 对 GROUP BY 子句的扩展 Les18 : 高级子查询 Les19 : Oracle9i 对 DML 和 DDL 语句的扩展 ...
- **数据控制语言(DCL)**:用于授予或收回用户对数据库对象的访问权限,主要命令有`GRANT`和`REVOKE`。 #### 二、SQL语句详解 1. **SELECT**:用于从数据库中检索数据。可以指定需要查询的数据列,并通过条件...
- `REVOKE`:撤销权限。 - `AUDIT`:记录SQL语句的执行情况。 - `GRANT`:授予用户或角色权限。 - `ROLLBACK`:回滚事务处理。 - `COMMIT`:提交事务处理。 - `INSERT`:插入新行到表中。 - `SELECT`:查询表...
4. **数据控制**: 讲解了如何使用GRANT和REVOKE语句来控制对数据库对象的访问权限。 5. **索引与优化**: 分析了索引的工作原理及其在提高查询性能方面的作用。 6. **高级特性**: 包括分区、序列、同义词等高级功能的...
在SQLPLUS中,一些命令如`ALTER`、`DROP`、`REVOKE`等用于修改或删除数据库对象,`GRANT`和`REVOKE`则用于权限管理,`ROLLBACK`、`COMMIT`用于事务控制,`INSERT`、`SELECT`、`UPDATE`和`DELETE`用于数据操作。...
ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...
-- Grant/Revoke system privileges grant unlimited tablespace to BOS; Spring 环境搭建 IOC 导入 context 依赖 beans、core、expression AOP 导入 测试集成 Web 集成 配置监听器 整合持久层框架 ...
当遇到权限问题时,可以查阅此手册获取关于`GRANT`、`REVOKE`、`ALTER USER`和`SET ROLE`等命令的用法,以及其他与权限相关的SQL语句。 5. **最佳实践**: - 定期审计权限:确保权限分配合理且安全,避免过度授权...
在安全性方面,笔记可能讲解了Oracle的权限和角色管理,如USER、ROLE和GRANT/REVOKE命令,以及如何设置用户权限和限制。同时,可能还会涉及审计功能,以追踪和记录数据库的访问行为。 Oracle的备份和恢复策略也是...
1. **角色和权限**:理解如何使用角色分配权限,以及GRANT和REVOKE语句的用法。 2. **存储过程的安全性**:通过存储过程,可以限制对数据库的直接访问,提高安全性。 通过阅读“Oracle PL-SQL语言初级教程.pdf”,...
此外,还有`CREATE INDEX`用于创建索引以提升查询速度,`CREATE VIEW`用于创建视图以简化复杂查询,以及`GRANT`和`REVOKE`用于权限管理。 SQL还支持聚合函数,如`COUNT`、`SUM`、`AVG`、`MAX`和`MIN`,用于对一组值...
GRANT和REVOKE语句用于分配和撤销权限。 以上只是Oracle和PL/SQL中部分关键知识点的概述,实际使用中还需要深入了解Oracle的体系架构、数据库设计原则、备份恢复策略、性能调优技巧等。通过学习和实践,我们可以更...