我创建了一个工程psql中的角色,然后创建用户角色。当我授予工程角色转为用户角色,用户角色不获得任何权限。注意工程创建于login特权。
postgres=# create role johnnyb inherit;
CREATE ROLE
postgres=# grant engineering to johnnyb;
GRANT ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-------------+------------------------------------------------------------+---------------
engineering | Create role, Create DB | {}
johnnyb | Cannot login | {engineering}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
The inherit关键字似乎没有效果。我缺少什么?我希望能够授予工程少数用户的特权(开始)。
LOGIN
是一种不可继承的特殊特权。根据数据库对象的权限测试您的继承,例如SELECT
在桌子上,它应该可以正常工作。确保在测试时您知道权限的用途public
以避免任何陷阱。
From 手册
角色属性 LOGIN、SUPERUSER、CREATEDB 和 CREATEROLE 可以被视为特殊权限,但它们永远不会像数据库对象上的普通权限那样被继承。您实际上必须将 SET ROLE 设置为具有这些属性之一的特定角色才能使用该属性。继续上面的示例,我们可以选择将 CREATEDB 和 CREATEROLE 授予 admin 角色。那么,以 joe 角色连接的会话不会立即拥有这些权限,只有在执行 SET ROLE admin 后才具有这些权限。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)