用户、配置文件和角色之间有什么区别

what is the difference between user, profile and roles

SQLPlus 中的角色、个人资料和用户有什么区别?

Oracle 的概念指南是此类问题的一个很好的起点。

查看示例 user accounts、配置文件和角色。

简而言之,配置文件是给定用户的限制列表。有些会影响密码(livetime、locktime 等),有些会影响用户可以使用的资源(max sessions、max io 等)。不幸的是,配置文件只能由管理员看到。

现在的用户:出于某些原因,用户和模式在 Oracle 中是同一回事(至少这是我的解释)。因此,如果您想创建一个 table、一个函数或任何东西,它都归用户所有。

您可以将一个用户的 table 的访问权限授予另一个用户。在较大的系统中,这很快就会变得非常混乱,因此人们通常授予对角色的访问权限,然后将此角色授予相关用户。将角色视为一袋特权。

N.B。从技术上讲,用户和角色生活在同一个系统 table SYS.USER$ 中,用户有 type#=1,角色 type#=0。因此,您可以将角色视为一种被阉割的用户,不允许拥有任何 table 或其他对象,但他们的人生目标是拥有特权并将其传达给真实用户。

编辑:

数据字典视图中有一个可用配置文件列表 DBA_PROFILES。数据库中的每个用户都分配给其中一个配置文件。我使用来自 oracle vagrant 的示例数据库,所有用户都有配置文件 DEFAULT:

SELECT username, profile FROM DBA_USERS;
SYS     DEFAULT
SYSTEM  DEFAULT
...

一个用户可以被授予零个或多个角色。更糟糕的是,一个角色可以授予另一个角色(尽管有些人不鼓励嵌套角色)。所以每个用户都可以拥有一整棵角色树。通常,它只是一个不到十几个角色的列表。

以下是所有可用角色的列表:

SELECT * FROM DBA_ROLES;
CONNECT
RESOURCE
DBA
...

这里是一个列表,其中列出了哪个用户被授予了什么角色:

SELECT * FROM DBA_ROLE_PRIVS; 
SYS     DBA
SYS     AUDIT_ADMIN
SYS     CONNECT
SYSTEM  DBA
...

所以个人资料和角色是完全不同的东西。配置文件规定了用户的密码寿命和 his/her 与数据库的连接。角色规定用户拥有哪些特权(访问 tables 或系统特权)。