角色和权限有什么区别
What is the difference between roles and privlages
是否每个使用我的数据库的用户都有一个角色?是否会有更多的管理员拥有角色,需要访问所有 table 的人?
此外,我无法向某个角色提供 table 级别的权限并将其提供给用户。这根本行不通。我必须直接向用户提供权限才能让他们工作。那是正常的吗?我应该能够向角色提供 table 级别的权限,还是必须手动向我的每个用户提供 table 级别的权限?
Would every user who uses my database have a role?
这取决于您(或者,我应该说,DBA)如何设置它。
很久以前,比如说直到 Oracle 8i,有 2 个非常流行的角色:connect
和 resource
所以当 DBA 创建一个新用户时,他们只是 运行
grant connect, resource to new_user;
和 new_user
已准备就绪,因为这些角色提供了最需要的权限,例如 create session
、create table
或 create view
(有关这些角色的更多信息,请查看文档predefined roles)。
然而,事实证明并不是每个人都应该被 g运行ted,例如create cluster
(这是 connect
的特权之一)所以现在你应该创建自己的角色,如果你愿意 - 然后 g运行t 对这些角色的某些特权,最后,g 运行t 角色给您的用户。
另一种选择是为每个用户保留 .sql 脚本。该脚本应该包含单独授予这些用户的权限列表,这意味着您不应该授予任何他们并不真正需要的权限。
I am unable to offer table-level privileges to a role and offer that to a user. it just won't work. I have to offer the privileges directly onto the user for them to work. Is that normal?
它有效,但并非无处不在。这些权限(g运行通过角色获得的权限)在 named PL/SQL 过程(即存储过程、函数、包)中不起作用。如果您必须在其中使用这些表,是的 - 您必须直接向每个用户授予 g运行t 权限。
与命名 PL/SQL 程序相反,通过角色授予的权限 g运行 将在匿名 PL/SQL 块或 SQL 级别上工作。
如果您想知道为什么要使用角色,那么答案就是我的第一句话:这取决于。
是否每个使用我的数据库的用户都有一个角色?是否会有更多的管理员拥有角色,需要访问所有 table 的人?
此外,我无法向某个角色提供 table 级别的权限并将其提供给用户。这根本行不通。我必须直接向用户提供权限才能让他们工作。那是正常的吗?我应该能够向角色提供 table 级别的权限,还是必须手动向我的每个用户提供 table 级别的权限?
Would every user who uses my database have a role?
这取决于您(或者,我应该说,DBA)如何设置它。
很久以前,比如说直到 Oracle 8i,有 2 个非常流行的角色:connect
和 resource
所以当 DBA 创建一个新用户时,他们只是 运行
grant connect, resource to new_user;
和 new_user
已准备就绪,因为这些角色提供了最需要的权限,例如 create session
、create table
或 create view
(有关这些角色的更多信息,请查看文档predefined roles)。
然而,事实证明并不是每个人都应该被 g运行ted,例如create cluster
(这是 connect
的特权之一)所以现在你应该创建自己的角色,如果你愿意 - 然后 g运行t 对这些角色的某些特权,最后,g 运行t 角色给您的用户。
另一种选择是为每个用户保留 .sql 脚本。该脚本应该包含单独授予这些用户的权限列表,这意味着您不应该授予任何他们并不真正需要的权限。
I am unable to offer table-level privileges to a role and offer that to a user. it just won't work. I have to offer the privileges directly onto the user for them to work. Is that normal?
它有效,但并非无处不在。这些权限(g运行通过角色获得的权限)在 named PL/SQL 过程(即存储过程、函数、包)中不起作用。如果您必须在其中使用这些表,是的 - 您必须直接向每个用户授予 g运行t 权限。
与命名 PL/SQL 程序相反,通过角色授予的权限 g运行 将在匿名 PL/SQL 块或 SQL 级别上工作。
如果您想知道为什么要使用角色,那么答案就是我的第一句话:这取决于。