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

cho*_*on4 32 postgresql

我知道还有其他类似的线程,但我不确定它们是否与Postgres相关.

我正在阅读PostgreSQL文档,其内容如下:

注意:如第20章所述,PostgreSQL实际上在"角色"方面进行了权限管理.在本章中,我们始终使用数据库用户来表示"具有LOGIN权限的角色".

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

IMS*_*SoP 36

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

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

为方便起见,许多工具和手册将具有登录权限的任何用户称为"用户"或"登录角色",并且任何不具有"组"或"组角色"的用户,因为保持粗略的是有用且通常的做法.那个结构.这完全是术语惯例,要理解权限,您只需要了解创建角色授予权限时可用的选项.

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

  • 我知道这是一个老问题,但是角色和用户可以被视为像 Unix 系统中的用户和组吗? (2认同)
  • @KGCybeX"用户"和"组"的旧概念可以看作与Unix中的相同术语非常相似,并且保持这种区别是常规*.但是,较新版本中的"角色"可以像用户或组一样 - *或两者* - 所以这个类比并不是那么有用.更好的类比是继承层次结构:您使用角色登录,获得直接授予该角色的任何权限,以及从其他角色继承的权限,以及这些角色从其他角色继承的权限等. (2认同)