postgresql 从具有只读访问权限的视图中选择数据时拒绝权限Postgres中新创建的对象

5rgfhyps  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(130)

我有一个postgres SQL数据库,我创建了一个只读用户,并对现有对象具有读访问权限。我创建了一个视图,现在我需要给予视图的读取权限。一旦我给了视图访问权限,它显示Permission denied for View..
这就是我所做的。

grant select on public."View_Name" to "readonlyuser@test_XXXXXX"

任何帮助都很感激。

relj7zay

relj7zay1#

是否在 * 授予readonlyuser权限后 * 创建视图?

如果是这样,它就不享有与其他意见相同的权利。这是由于GRANT... ON的意思是“存在的视图”。权限保留在PostgreSQL中的项目上。如果删除某个对象,则该对象的所有权限都将丢失。即使您随后创建了具有相同名称的对象,它仍然是独特的,并且具有默认权限,因为它是一个单独的对象。
我尝试了下面的查询,它为我工作:

--Create view
CREATE VIEW pulic.”demov” AS SELECT * FROM demotb; 
--Grant select on view to user
GRANT SELECT ON pulic.”demov” TO readonly;

在此之后,使用此readonly用户登录数据库并尝试选择视图。

要包含将来创建的视图,可以用途:

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonlyuser;

相关问题