在 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
函数。
fetchval
是hstore
上的->
运算符对应的函数。
可能您已经撤销了非特权用户执行 hstore 函数的权限。
例如,如果 hstore
扩展存在于 public
架构中,而您 运行 类似的东西:
revoke execute on all functions in schema public from public;
那么用户将有权访问 select hstore
内容,但在尝试应用 ->
运算符时收到此错误消息:ERROR: 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
函数。
fetchval
是hstore
上的->
运算符对应的函数。
可能您已经撤销了非特权用户执行 hstore 函数的权限。
例如,如果 hstore
扩展存在于 public
架构中,而您 运行 类似的东西:
revoke execute on all functions in schema public from public;
那么用户将有权访问 select hstore
内容,但在尝试应用 ->
运算符时收到此错误消息:ERROR: permission denied for function fetchval
。
要解决该问题,您可能需要重新审视您的安全策略并以不同方式处理函数的权限。