当使用非 super 用户创建这样的函数时,出现以下错误:
错误:语言 c 的权限被拒绝
SQL 状态:42501
创建的函数是:
CREATE OR REPLACE FUNCTION dblink_connect (text)
RETURNS text
AS '$libdir/dblink','dblink_connect'
LANGUAGE C STRICT;
但是,如果我想将 C 语言的权限授予我的非 super 用户,则会出现以下错误:
postgres=# 将 c 语言的使用授权给 caixa;
错误:语言“c”不受信任
也就是说,非 super 用户不能用C语言创建函数?还是我做错了什么?
最佳答案
没错,根据doc :
Only superusers can create functions in untrusted languages
快速检查:
SELECT lanpltrusted FROM pg_language WHERE lanname LIKE 'c';
lanpltrusted
--------------
f
(1 row)
如果您真的想要这个,那么您可以修改pg_language
系统目录(ALTER LANGUAGE
没有这样的选项):
UPDATE pg_language SET lanpltrusted = true WHERE lanname LIKE 'c';
下面的每个用户@Otheus:UPDATE 语句必须在函数所在的数据库中完成。
关于c - 错误 : permission denied for language c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7014437/