POSTGRESQL 中无表创建权限的视图创建权限

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

我有一个用例,我想创建一个用户,该用户应该具有对公共模式的选择和在公共模式上创建视图的访问权限,但不能创建表用户可以创建新视图,但不能创建表

`--by admin user 
CREATE ROLE view_creator;
GRANT CREATE ON SCHEMA public TO view_creator;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO view_creator;
CREATE USER test WITH PASSWORD 'test123';

GRANT view_creator TO test;
-- by user test 
create view test_2 as select * from public.users_test -- This should 
work
CREATE TABLE public.users (
id serial4 NOT NULL,
"name" varchar(50) NULL,
age int4 NULL,
CONSTRAINT users_pkey PRIMARY KEY (id)
);  --- This should not work`
database postgresql database-administration sql-grant data-management
1个回答
0
投票

没有权限可以做到这一点。如果您对模式拥有

CREATE
权限,则可以在其中创建任何对象。

您唯一的选择是编写一个事件触发器,每当用户创建视图以外的内容时,该触发器就会抛出错误。

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