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

问题描述 投票:0回答:1

SQL Plus中角色、配置文件和用户的区别是什么?

sql oracle sqlplus
1个回答
3
投票

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

例如,请看 用户账户之后才是配置文件和角色。

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

现在是用户。由于某些原因,用户和模式在Oracle中是一样的(至少我是这样解释的)。所以,如果你想创建一个表,或者一个函数,或者任何东西,它都是由一个用户拥有的。

你可以将一个用户的表的访问权授予另一个用户。在较大的系统中,这可能很快就会变得相当混乱,所以人们通常会授予一个角色访问权,然后将这个角色授予相关用户。把一个角色看作是一个特权袋。

N.B. 从技术上讲,用户和角色生活在同一个系统表中 SYS.USER$,用户有 type#=1角色 type#=0. 因此,你可以把角色看作是一种被阉割的用户,他们不被允许拥有任何表或其他对象,但他们生活的目的是拥有特权,并把它们传递给真正的用户。

EDIT:

在数据字典视图中,有一个可用的配置文件列表 DBA_PROFILES. 数据库中的每个用户都被分配到其中的一个配置文件中。我使用的数据库示例来自 神棍在这里,所有的用户都有个人资料 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
...

所以配置文件和角色是完全不同的东西. 配置文件规范了用户的密码寿命和他与数据库的连接。角色规范了一个用户拥有的权限(访问表或系统权限)。

© www.soinside.com 2019 - 2024. All rights reserved.