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

我知道还有其他的 ABc0,但我不确定它们是否与 Postgres 有关。

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

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

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

33594 次浏览

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

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

为了方便起见,许多工具和手册将任何具有登录权限的用户称为“用户”或“登录角色”,而将任何没有登录权限的用户称为“组”或“组角色”,因为大致保持这种结构是有用的和常见的做法。这完全是一个术语约定,为了理解权限,您只需要了解 创造角色允许他们进入时可用的选项。

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

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

Https://aws.amazon.com/blogs/database/managing-postgresql-users-and-roles/#:~:text=users%2c%20groups%2c%20and%20roles%20are,to%20log%20in%20by%20default.&text=the%20roles%20are%20used%20only,grant%20them%20all%20the%20permissions.

用户、组和角色 用户、组和角色在 PostgreSQL 中是相同的,唯一的区别是用户在默认情况下拥有登录权限。CREATEUSER 和 CREATEGROUP 语句实际上是 CREATEROLE 语句的别名。

在此输入图像描述

在其他关系数据库管理系统(如 Oracle)中,用户和角色是两个不同的实体。在 Oracle 中,角色不能用于登录到数据库。这些角色仅用于对授权和其他角色进行分组。然后可以将此角色分配给一个或多个用户,以授予他们所有的权限。有关如何将用户、角色和授权从 Oracle 迁移到 PostgreSQL 的详细信息,请参阅 AWS 博客文章 Use SQL to map users,role,and Grant from Oracle to PostgreSQL。