postgres中从视图读取的用户权限错误

ryevplcw  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(302)

我正在使用postgres,并且有一个新的只读用户,该用户对基本架构中的所有表都有读取权限。我在试着 SELECT 从基本架构的特定视图中删除一些数据,并且能够从视图中看到值。为了测试数据计数,我不得不在视图定义中做一些更改,而在postgres中,没有办法改变视图,所以我不得不这样做 drop 以及 recreate 使用具有更高权限的旧用户创建具有新定义的视图。现在我也一样 SELECT 在视图上进行查询,我得到一个权限错误。

ERROR:  permission denied for view 
SQL state: 42501

我试过了 Grant SELECT on ALL TABLES on Schema base to user 再次从视图中看到值。我不明白的是,我没有改变任何语法,因为第一次 GRANT ,为什么我要跑 GRANT SELECT 再次声明新用户是否能够访问视图?默认情况下,用户不应该已经能够访问所有表和视图了吗

gkl3eglg

gkl3eglg1#

你可以用 CREATE OR REPLACE VIEW 更改视图定义(如果不更改其列)。
在postgresql中,权限存储在对象上。如果删除一个对象,它的所有权限都将消失。如果以后创建同名的对象,则该对象仍然是另一个对象,并将具有默认权限。
你可以用 ALTER DEFAULT PRIVILEGES 为将来创建的对象授予权限。

相关问题