2009-10-29 179 views
16

我需要权限授予所有用户的所有用户,我可以这样做:甲骨文 - 权限授予

GRANT select on table TO user1; 
GRANT select on table TO user2; 
... 

但也有很多用户。我怎样才能将此特权一次性授予所有用户?

我想:

GRANT select on table TO ALL; 

但是,这并不工作。

回答

23
grant select on table to public; 

但是,当你这样做的时候要小心 - 确保它是你真正想要做的。

+1

谢谢,这正是我在学校任务中​​需要做的事情,但我无法弄清楚。我有99%的代理已完成,这是剩下的最后一件事:) – 2009-10-29 13:31:46

7

您应该使用角色。 授予角色权限。 授予用户角色。

+0

Oracle'累计'或'不相交'中的角色是?在DB2中,它们是累积性的 - 如果您已被授予角色,则可以随时运行这些权限。在Informix中,角色是分开的;您使用SET ROLE语句来设置哪个角色当前处于活动状态,并且您只能使用当前设置的角色来执行角色提供的权限。 (当然,您可以始终行使直接授予用户名称的任何权限。) – 2009-10-29 13:55:37

+0

a角色就像用户,但隐藏了所有授予该角色的用户。 对于基于角色的设置而不是分别授予每个用户的权限是一种更好的做法。 我认为Oracle更像DB2。 – Dani 2009-10-29 14:00:30

+0

@Dani - 谢谢。一项酸性测试是“Oracle中是否存在SET ROLE声明”。否则,它必须像DB2一样工作;如果有的话,它可能更像Informix。 – 2009-10-29 14:08:38