我知道还有其他threads that are similar,但我不确定它们是否与Postgres相关。
I am reading the PostgreSQL documentation which it reads as follows:
注意:如第20章所述,PostgreSQL实际上具有特权 管理层的“角色”。在本章中,我们一直使用 数据库用户表示“具有LOGIN权限的角色”。
这是否基本上意味着角色是数据库用户?或者角色和用户之间有区别吗?用户是否有可能没有完全权限,而角色是总是拥有完全权限的用户?
答案 0 :(得分:26)
Postgres的早期版本和其他一些数据库系统具有“组”(被授予对数据库对象的访问权限)和“用户”(可以登录,并且是一个或多个组的成员)的单独概念。 / p>
在Postgres的现代版本中,这两个概念已被合并:“角色”可以具有登录的能力,“从其他角色继承”的能力(例如用户是组的成员或组是另一个组的成员),以及对数据库对象的访问。
为方便起见,许多工具和手册将具有登录权限的任何用户称为“用户”或“登录角色”,并且任何没有“组”或“组角色”的用户都称为“用户”或“组角色”,因为它是有用且通用的做法。大致保持这种结构。这完全是术语惯例,要理解权限,您只需要了解creating roles和granting them access时可用的选项。
同样纯粹为了方便起见,Postgres仍然接受使用旧术语的命令,例如CREATE USER
和CREATE GROUP
,它们都是CREATE ROLE
的别名。如果您编写CREATE USER
,则默认情况下会将LOGIN
权限添加到新角色,以便在单独命令时模拟旧行为。
答案 1 :(得分:0)
我发现此link非常有用。 最终目标是某些用户/角色可以读写,某些规则/用户只能读取。