作为 postgres 用户,我create extension plpython3u;
的数据库中有
然后我将其设置plpython3u
为trusted:select lanpltrusted from pg_language where lanname like 'plpython3u';
返回true
但是当我的 db_user 尝试
create function check_data_valid(id bigint)
returns boolean
as $$
-- ...
return true
$$ language plpython3u;
我得到了错误:permission denied for the language plpython3u
grant usage on plpython3u to db_user
因此,对于我的 postgres 用户,我已经尝试过:grant execute on plpython3u to db_user
但两者都返回错误:
relation python doesn't exist
也许是因为它是一个扩展......但是,我不知道该怎么做才能创建我的存储过程。
首先不要让 plpython3u 成为受信任的语言。这很糟糕。 您正在以可能被严重滥用的方式授予对数据库、文件系统等各种事物的访问权限。 请重新考虑。
现在,根据您的评论,您希望将管理员权限与普通用户权限分开。这样做的方法是确保超级用户是 NOINHERIT 并且用户被授予角色。你可以:
然后登录,
myuser
您可以:并且您获得超级用户权限。然后,您可以使用它以类似于 *nix 系统上的 sudo 的方式临时升级您的权限。