在hstore中选择一个值会导致函数fetchval"权限被拒绝。

时间:2016-03-22 11:16:47

标签: postgresql permissions hstore

我在数据库中使用hstores并且在权限方面遇到问题。以超级用户身份登录时,一切正常,但使用"正常"登录角色,我似乎无法在hstore中选择一个值:

mydb=> select properties->'foo' from t1;
ERROR:  permission denied for function fetchval

选择hstore本身确实有效,所以它似乎不是一个表访问权限问题:

mydb=> select properties from t1;
         properties         
----------------------------
 "baz"=>"foz", "foo"=>"bar"
(1 row)

我尝试在线搜索此错误,但结果为零。另外,我在函数列表中找不到fetchval函数。

1 个答案:

答案 0 :(得分:1)

fetchval是与->上的hstore运算符对应的函数。

可能您已撤销从非特权用户执行hstore函数的权利。

例如,如果hstore扩展名存在于public架构中,并且您运行类似的内容:

revoke execute on all functions in schema public from public;

然后,用户将有权选择hstore内容,但在尝试应用ERROR: permission denied for function fetchval运算符时会收到以下错误消息:->

要解决此问题,您可能需要重新访问安全策略并以不同方式处理函数权限。