Ste*_*and 4 postgresql stored-procedures postgresql-9.1 plpython
作为 postgres 用户,create extension plpython3u;
我的数据库中有
然后我已将其设置plpython3u
为受信任: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;
Run Code Online (Sandbox Code Playgroud)
我得到了错误: permission denied for the language plpython3u
所以,我的Postgres的用户,然后我曾尝试:grant usage on plpython3u to db_user
和grant execute on plpython3u to db_user
,但都返回错误:
relation python doesn't exist
也许是因为它是一个扩展......但是,我不知道该怎么做才能创建我的存储过程。
首先不要把 plpython3u 变成可信赖的语言。这很糟糕。 您正在以可能被严重滥用的方式访问数据库、文件系统等中的各种内容。 请重新考虑。
现在,根据您的评论,您希望将管理员权限与普通用户权限分开。这样做的方法是确保超级用户是 NOINHERIT 并且用户被授予角色。你可以:
CREATE ROLE mydba WITH SUPERUSER NOINHERIT;
GRANT mydba TO myuser;
Run Code Online (Sandbox Code Playgroud)
然后登录,myuser
然后您可以:
SET ROLE mydba;
Run Code Online (Sandbox Code Playgroud)
您将获得超级用户权限。然后,您可以使用它以类似于 *nix 系统上的 sudo 的方式临时升级您的权限。
归档时间: |
|
查看次数: |
7367 次 |
最近记录: |