orcle 中如何给一个role授予某一个schema里的所有表的select权限?

如果用grant select anytable to ”role”,那这个role就能查询所有schema里的表了,我只能让这个role查询某一个schema里的表怎么办?

角色分配到具体表的select、insert、delete、update权限:
grant select,insert,delete,update on tbname to temprole;
用户的权限到具体表的select、insert、delete、update:
grant select,insert,delete,update on tbname to username;

Top
特权的定义

特权是指用户对数据库进行操作的权力。特权有系统特权和对象
特权两种。系统特权允许用户建立、修改和删除各种数据库结构,而
对象特权仅允许对特定的数据库对象进行操作。特权可以授予也可以
回收。

角色的定义

角色是把多个系统和对象特权集中到一起,实际上就是一个特权
的集合,或理解为特权组。DBA可以把某个角色授予一个用户,那
末这个用户就获得了属于这个角色的所有特权,这样可以大大简化特
权的授予和回收。

系统特权和角色的授予

可以把系统特权和角色授予某个用户或角色。
授予系统特权的语法为:
GRANT {SYSTEM_PRIV|ROLE} [,…] TO {USER|ROLE|PUBLIC}
[WITH ADMIN OPTION];
其中:SYSTEM_PRIV 为要授予的系统特权
ROLE 为要授予的角色
TO{USER|ROLE}指定要被授予特权或角色的用户或角色。
若有ADMIN OPTION 选项的被授予者将拥有以下能力

1、被授予者有授予和回收系统特权/角色的权力。
2、角色的被授予者可以进一步用ADMIN OPTION
授予系统特权或角色。
3、角色的被授予者可以修改或删除角色。
例:GRANT CREATE SESSION TO 用户
GRANT CREATE SESSION TO 角色
GRANT 角色 TO 用户
GRANT 角色 TO 角色

系统特权的种类

系统特权有25类80多种。涉及到TABLE、INDEX、ROLE、
SESSION、SEQUENCE、SYSTEM、TABLESPACE等方面。

对象特权的授予

不同类型的对象具有不同的对象特权。在建立某对象时,对象
拥有者(用户/模式)拥有该对象的所有对象特权。
授予对象特权的语法:
GRANT
{OBJECT_PRIV|ALL[PRIVELEGES]} [(COLUMN [,…]) [,…]
ON
[SCHEMA . OBJECT] TO {USER|ROLE|PUBLIC}
WITH GRANT OPTION;
例:GRANT SELECT ON 表 TO 用户
GRANT SELECT ON 表 TO 角色
对象特权的种类
不同的对象有不同的特权,如ALTER、DELETE、EXECUTE、
INDEX、INSERT、READ、SELECT、UPDATE、REFERENCES等。
系统特权的回收
REVOKE 特权 FROM 用户
REVOKE 特权 FROM 角色
对象特权的回收
REVOKE 对象特权 ON 对象 FROM 用户
ERVOKE 对象特权 ON 对象 FROM 角色
角色的建立:CREATE ROLE 角色名
角色的删除:DROP ROLE 角色名
温馨提示:答案为网友推荐,仅供参考