PostgreSQL 8.4函数允许 - 我必须授予公共执行,否则得到错误42501 permisson否认

时间:2011-01-27 05:33:14

标签: postgresql

作为角色的角色连接谁是已被授予执行功能的角色的“成员”我仍然会收到错误:

ERROR: 42501: permission denied for function xxx

关于其他功能,这不是问题。我试过更换功能和权限无济于事。我似乎能够调用该函数的唯一方法是当我授予public角色执行权限时,这当然不是我想要的,尤其是。因为它是一个plpythonu函数。

我在pgAdmin中注意到,Dependencies选项卡包含我已授予有问题功能执行权限的角色,而另一个功能(即工作)具有完全相同的GRANT,角色未显示在Dependencies选项卡中 - 那是什么意思?

1 个答案:

答案 0 :(得分:0)

在调用函数的函数上指定了SECURITY DEFINER,从而使用外部函数的所有者调用函数。从外部函数的函数定义中删除SECURITY DEFINER解决了这个问题。