Sql 在postgres中从视图读取的用户权限错误
我正在使用postgres,并且有一个新的只读用户,该用户对基本架构中的所有表都有读取权限。我试图从基本模式的特定视图中选择一些数据,并且能够从视图中看到值。为了测试数据计数,我必须对视图定义进行一些更改,在Postgres中,没有办法更改视图,因此我必须Sql 在postgres中从视图读取的用户权限错误,sql,postgresql,Sql,Postgresql,我正在使用postgres,并且有一个新的只读用户,该用户对基本架构中的所有表都有读取权限。我试图从基本模式的特定视图中选择一些数据,并且能够从视图中看到值。为了测试数据计数,我必须对视图定义进行一些更改,在Postgres中,没有办法更改视图,因此我必须删除,并使用具有更高权限的老用户重新创建具有新定义的视图。现在,我在视图上运行相同的SELECT查询,得到一个权限错误 ERROR: permission denied for view SQL state: 42501 我再次尝试将S
删除,并使用具有更高权限的老用户重新创建具有新定义的视图。现在,我在视图上运行相同的SELECT
查询,得到一个权限错误
ERROR: permission denied for view
SQL state: 42501
我再次尝试将Schema base上所有表上的SELECT授予user
,并且能够从视图中看到值。我不明白的是,自从第一次GRANT
以来,我没有更改任何语法,为什么我必须再次运行GRANT SELECT
语句才能让新用户访问视图?默认情况下,用户是否应该已经能够访问所有的表和视图如果不更改视图的列,则可以使用创建或替换视图
来更改视图定义
在PostgreSQL中,权限存储在对象上。如果删除对象,则其所有权限都将消失。如果以后使用相同的名称创建对象,则该对象仍然是不同的对象,并将具有默认权限
您可以使用alterdefaultprivileges
为将来创建的对象授予权限