在我的例子中,我想阻止来自具有 2 个模式的数据库的表和视图列表:
- 民众
- 双
我想防止任何表和视图列表向特定用户公开,因此我查阅了这个答案:https ://dba.stackexchange.com/a/177272/118215
但是当我阅读答案时,我注意到 ROLE 与 USER 不同,并且登录是与上面的不同的“实体”。
尽管相关,但我无法理解以下两者之间的区别:
- 登录
- 角色
- 用户
因此,有人可以解释差异吗?
在我的例子中,我想阻止来自具有 2 个模式的数据库的表和视图列表:
我想防止任何表和视图列表向特定用户公开,因此我查阅了这个答案:https ://dba.stackexchange.com/a/177272/118215
但是当我阅读答案时,我注意到 ROLE 与 USER 不同,并且登录是与上面的不同的“实体”。
尽管相关,但我无法理解以下两者之间的区别:
因此,有人可以解释差异吗?
PostgreSQL 唯一的实体是角色。ROLE 可以拥有对象(表、视图)并成为“组角色”。但是没有 LOGIN 和 USER 这样的实体。其他 DBMS 将“登录”、“用户”、“组”、“角色”作为单独的实体(Oracle、MSSQL 等)。但是 PostgreSQL 在这方面是独一无二的,它只有 ROLE。
如果 ROLE 具有登录属性 - 它被称为 LOGIN。然后客户端(一个人,或一些自动服务)连接到数据库,客户端提供这样的角色的名称。任何角色都可以具有登录属性。
没有用户实体。为方便起见,DBMS 有两个功能
但它们只是包装纸
考虑它的简单方法:用户只是属于一个人的角色。但这只是一种方便。
如果您希望多个人都可以访问一张表,最方便的方法是创建一个组角色 (
GRANT group_role TO role1, role2, role3
),并赋予 group_role 访问该表的权限。现在,当一个人登录role1
并尝试访问一个表时 - 将检查权限role1
-group_role
如果至少其中一个人具有访问权限 - 成功。角色(例如)管理员、经理、秘书、开发人员。它就像一个业务功能。您可以根据需要将它们分配给不同实体的权限(例如只能从某些表中选择)。角色也可以选择登录。
用户可以属于一个角色。更常见的是,多个用户被分配给一个角色。通过这种方式,您可以控制如何以更有条理的方式访问事物。用户也可以登录。
请参阅用户和角色之间的区别是什么?
以及角色和用户之间的区别