【问题标题】:User Permissions error for reading from view in postgres从 postgres 中的视图读取的用户权限错误
【发布时间】:2021-04-27 11:32:59
【问题描述】:

我正在使用 postgres 并且有一个新的只读用户,该用户对基本模式中的所有表具有读取权限。我试图SELECT 来自基本模式的特定视图的一些数据,并且能够从视图中看到值。为了测试数据计数,我必须在视图定义中进行一些更改,而在 Postgres 中没有办法更改视图,因此我必须使用具有更高权限的旧用户使用新定义的 droprecreate 视图。现在我在 View 上运行相同的 SELECT 查询并收到权限错误。

 ERROR:  permission denied for view 
SQL state: 42501

我再次尝试Grant SELECT on ALL TABLES on Schema base to user 并能够从视图中看到值。我没有得到的是自第一个GRANT 以来我没有更改任何语法,为什么我必须再次运行GRANT SELECT 语句才能让新用户能够访问视图?默认情况下用户不应该已经能够访问所有表和视图

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    如果您不更改其列,您可以使用CREATE OR REPLACE VIEW 更改视图定义。

    在 PostgreSQL 中,权限存储在对象上。如果你删除一个对象,它的所有权限都会消失。如果您稍后创建具有相同名称的对象,该对象仍然是不同的对象,并且将具有默认权限。

    您可以使用ALTER DEFAULT PRIVILEGES 为将来创建的对象授予权限。

    【讨论】:

      猜你喜欢
      • 2014-03-08
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2019-01-18
      • 1970-01-01
      • 2016-12-07
      • 2015-02-08
      相关资源
      最近更新 更多