在 hstore 中选择一个值会导致 "permission denied for function fetchval"

Selecting a value in a hstore results in "permission denied for function fetchval"

我在我的数据库中使用 hstores,但遇到权限问题。当以超级用户身份登录时,一切正常,但是当使用 "normal" 登录角色时,我似乎无法 select hstore 中的值:

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

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

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

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

fetchvalhstore上的->运算符对应的函数。

可能您已经撤销了非特权用户执行 hstore 函数的权限。

例如,如果 hstore 扩展存在于 public 架构中,而您 运行 类似的东西:

revoke execute on all functions in schema public from public;

那么用户将有权访问 select hstore 内容,但在尝试应用 -> 运算符时收到此错误消息:ERROR: permission denied for function fetchval

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