如何创建默认情况下不“开启”的 Postgres 角色

问题描述 投票:0回答:1

我正在尝试创建一个默认情况下不“打开”但需要通过 SET ROLE 命令“打开”的角色。我以为 NOINHERIT 会是问题,但这不起作用(在 Postgres v. 15 中):

create role admin_role NOINHERIT;
create role user login password 'secret';
grant admin_role to user;

create table t(i integer);
alter table revoke insert from user;

-- login as user1
insert into t values (1); -- does happen!!!

我希望 user1 只能在 SET ROLE admin_role 之后插入数据。

postgresql roles
1个回答
0
投票

您必须在会员上使用

NOINHERIT
,而不是在
admin_role
上。

NOINHERIT
表示“不继承其所属角色的特权”。

© www.soinside.com 2019 - 2024. All rights reserved.