用户和角色有啥区别?
Posted
技术标签:
【中文标题】用户和角色有啥区别?【英文标题】:What is the difference between a user and a role?用户和角色有什么区别? 【发布时间】:2015-02-26 20:30:33 【问题描述】:我知道还有其他threads that are similar,但我不确定它们是否与 Postgres 相关。
I am reading the PostgreSQL documentation which it reads as follows:
注意:正如第 20 章中所解释的,PostgreSQL 实际上具有特权 管理“角色”。在本章中,我们一直使用 数据库用户表示“具有 LOGIN 权限的角色”。
这基本上意味着角色是数据库用户吗?还是角色和用户之间有区别?用户是否有可能没有完全权限,而角色是始终拥有完全权限的用户?
【问题讨论】:
From the manual "CREATE USER 现在是 CREATE ROLE 的别名。唯一的区别是当命令拼写为 CREATE USER 时,默认假定为 LOGIN,而当命令拼写为 CREATE ROLE" 【参考方案1】:Postgres 的早期版本和其他一些数据库系统具有“组”(被授予对数据库对象的访问权限)和“用户”(可以登录,并且是一个或多个组的成员)的独立概念。
在 Postgres 的现代版本中,这两个概念已被合并:“角色”可以具有登录的能力,“继承”其他角色的能力(例如用户是组的成员,或者组是另一个组的成员),并且可以访问数据库对象。
为方便起见,许多工具和手册将任何具有登录权限的用户称为“用户”或“登录角色”,而将任何没有登录权限的用户称为“组”或“组角色”,因为这是有用且常见的做法大致保持这种结构。这完全是术语约定,要了解权限,您只需了解creating roles 和granting them access 时可用的选项。
再次纯粹为了方便,Postgres 仍然接受使用旧术语的命令,例如CREATE USER
和CREATE GROUP
,它们都是CREATE ROLE
的别名。如果你写CREATE USER
,LOGIN
权限将默认添加到新角色中,以模拟单独命令时的旧行为。
【讨论】:
我知道这是一个老问题,但是角色和用户是否可以像在 Unix 系统中一样被视为用户和组? @KGCybeX 旧的“用户”和“组”概念可以看出与 Unix 中的相同术语非常相似,并且保持这种区别是传统的。但是较新版本中的“角色”可以像用户或组一样 - 或两者 - 所以这个类比没有那么有用。一个更好的类比是继承层次结构:您使用一个角色登录,并获得直接授予该角色的任何权限,以及它从其他角色继承的权限,以及这些角色从其他角色继承的权限,等等。【参考方案2】:我发现这个link 非常有用。 最终目标是某些用户/角色可以读写,某些规则/用户只能读取。
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。【参考方案3】: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 中是一样的,唯一的区别是用户默认有登录权限。 CREATE USER 和 CREATE GROUP 语句实际上是 CREATE ROLE 语句的别名。
enter image description here
在 Oracle 等其他关系数据库管理系统 (RDBMS) 中,用户和角色是两个不同的实体。在 Oracle 中,不能使用角色登录数据库。这些角色仅用于对授权和其他角色进行分组。然后可以将此角色分配给一个或多个用户以授予他们所有权限。有关如何将用户、角色和授权从 Oracle 迁移到 PostgreSQL 的更多详细信息,请参阅 AWS 博客文章使用 SQL 将用户、角色和授权从 Oracle 映射到 PostgreSQL。
【讨论】:
以上是关于用户和角色有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章