用户和角色之间有什么区别?

时间:2014-12-30 17:00:21

标签: postgresql

我知道还有其他threads that are similar,但我不确定它们是否与Postgres相关。

I am reading the PostgreSQL documentation which it reads as follows:

  

注意:如第20章所述,PostgreSQL实际上具有特权   管理层的“角色”。在本章中,我们一直使用   数据库用户表示“具有LOGIN权限的角色”。

这是否基本上意味着角色是数据库用户?或者角色和用户之间有区别吗?用户是否有可能没有完全权限,而角色是总是拥有完全权限的用户?

2 个答案:

答案 0 :(得分:26)

Postgres的早期版本和其他一些数据库系统具有“组”(被授予对数据库对象的访问权限)和“用户”(可以登录,并且是一个或多个组的成员)的单独概念。 / p>

在Postgres的现代版本中,这两个概念已被合并:“角色”可以具有登录的能力,“从其他角色继承”的能力(例如用户是组的成员或组是另一个组的成员),以及对数据库对象的访问。

为方便起见,许多工具和手册将具有登录权限的任何用户称为“用户”或“登录角色”,并且任何没有“组”或“组角色”的用户都称为“用户”或“组角色”,因为它是有用且通用的做法。大致保持这种结构。这完全是术语惯例,要理解权限,您只需要了解creating rolesgranting them access时可用的选项。

同样纯粹为了方便起见,Postgres仍然接受使用旧术语的命令,例如CREATE USERCREATE GROUP,它们都是CREATE ROLE的别名。如果您编写CREATE USER,则默认情况下会将LOGIN权限添加到新角色,以便在单独命令时模拟旧行为。

答案 1 :(得分:0)

我发现此link非常有用。 最终目标是某些用户/角色可以读写,某些规则/用户只能读取。