【问题标题】:Oracle - grant privileges to all usersOracle - 授予所有用户权限
【发布时间】:2009-10-29 13:23:20
【问题描述】:

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

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

但是有很多用户。如何一次向所有用户授予此权限?

我试过了:

GRANT select on table TO ALL;

但这不起作用。

【问题讨论】:

    标签: oracle


    【解决方案1】:
    grant select on table to public;
    

    但是当你这样做时要小心——确保这是你真正想做的。

    【讨论】:

    • 谢谢,这正是我在学校作业中需要做的,但我想不通。我已经完成了 99% 的任务,这是剩下的最后一件事 :)
    • 将所有权限授予公共;听起来很有趣!
    【解决方案2】:

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

    【讨论】:

    • Oracle 中的角色是“累积的”还是“不相交的”?在 DB2 中,它们是累积的——如果您被授予角色,那么您可以随时行使这些权限。在 Informix 中,角色是分开的;您使用 SET ROLE 语句来设置当前处于活动状态的角色,并且在任何时候您只能使用当前设置的角色行使角色提供的权限。 (当然,您始终可以行使直接授予您的用户名的任何权限。)
    • 一个角色就像一个用户,但它隐藏了所有被授予该角色的用户。更好的做法是授予基于角色的设置的权限,而不是分别授予每个用户。我认为 Oracle 更像是 DB2。
    • @Dani - 谢谢。一个酸性测试是“Oracle 中是否有 SET ROLE 语句”。如果不是,它必须像 DB2 一样工作;如果有的话,它可能更像 Informix。
    • 一个用户可以拥有多个角色,并且角色可以被授予其他角色。这里的图表很好:download.oracle.com/docs/cd/B19306_01/server.102/b14220/…
    • Oracle 中有一个 SET ROLE 命令,您可以通过给定的执行来启用任何或所有角色。有些事情不能通过角色来完成。例如,您不能在已通过 ROLE 授予 SELECT 权限的表上创建视图。
    猜你喜欢
    • 1970-01-01
    • 2019-02-17
    • 2020-11-22
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多