Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在postgres中从视图读取的用户权限错误_Sql_Postgresql - Fatal编程技术网

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

Sql 在postgres中从视图读取的用户权限错误,sql,postgresql,Sql,Postgresql,我正在使用postgres,并且有一个新的只读用户,该用户对基本架构中的所有表都有读取权限。我试图从基本模式的特定视图中选择一些数据,并且能够从视图中看到值。为了测试数据计数,我必须对视图定义进行一些更改,在Postgres中,没有办法更改视图,因此我必须删除,并使用具有更高权限的老用户重新创建具有新定义的视图。现在,我在视图上运行相同的SELECT查询,得到一个权限错误 ERROR: permission denied for view SQL state: 42501 我再次尝试将S

我正在使用postgres,并且有一个新的只读用户,该用户对基本架构中的所有表都有读取权限。我试图从基本模式的特定视图中选择一些数据,并且能够从视图中看到值。为了测试数据计数,我必须对视图定义进行一些更改,在Postgres中,没有办法更改视图,因此我必须
删除
,并
使用具有更高权限的老用户重新创建具有新定义的视图。现在,我在视图上运行相同的
SELECT
查询,得到一个权限错误

 ERROR:  permission denied for view 
SQL state: 42501

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

如果不更改视图的列,则可以使用
创建或替换视图
来更改视图定义

在PostgreSQL中,权限存储在对象上。如果删除对象,则其所有权限都将消失。如果以后使用相同的名称创建对象,则该对象仍然是不同的对象,并将具有默认权限

您可以使用
alterdefaultprivileges
为将来创建的对象授予权限