Oracle - 给所有用户授予特权

23

我需要授予所有用户权限,我可以这样做:

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

但是有很多用户,我该如何一次性将这个权限授予所有用户?

我尝试过:

GRANT select on table TO ALL;

但是那样不起作用。

2个回答

33
grant select on table to public;

但是在这样做时要小心,确保这真的是你想要做的。


1
谢谢,这正是我在学校作业中需要做的,但我无法弄清楚。我已经完成了99%的任务,这是最后一件事 :) - Richard Knop
授予公共用户所有权限; - Henrique

7
你应该使用角色。 授予角色权限。 将角色授予用户。

Oracle中的角色是“累积的”还是“不相交的”?在DB2中,它们是累积的 - 如果您被授予了一个角色,您可以随时行使那些权限。在Informix中,角色是分开的;您使用SET ROLE语句设置当前活动的角色,并且在任何时候,您只能使用当前设置的角色提供的特权。当然,您始终可以行使直接授予您用户名的任何特权。 - Jonathan Leffler
一个角色就像一个用户,但它背后隐藏着被授予该角色的所有用户。 在基于角色的设置上授予权限比单独为每个用户授予权限更好的实践。 我认为Oracle更像DB2。 - Dani
@Dani - 谢谢。"酸测试"是指在Oracle中是否有SET ROLE语句。如果没有,它必须像DB2一样工作;如果有一个,它可能更像Informix。 - Jonathan Leffler
1
一个用户可以拥有多个角色,而角色也可以授予其他角色。这里有一个漂亮的图表:http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/security.htm#i14426 - David Aldridge
Oracle中有一个SET ROLE命令,您可以在给定的执行中启用任何或所有角色。有些事情不能通过角色完成。例如,您无法通过角色在授予了SELECT权限的表上创建视图。 - DCookie
感谢DCookie和David Aldridge。 - Jonathan Leffler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接