共享对象 (.so) 文件 postgresql 的权限被拒绝

Permission Denied on shared object (.so) file postgresql

我正在尝试将 C 语言函数导入我的 postgresql 数据库。

我的主目录中有我的共享对象,但我不能在我的数据库中使用它。

CREATE OR REPLACE FUNCTION add_one(integer) RETURNS integer AS '/home/pedro/.../.../example.so', 'add_one' LANGUAGE C STRICT;

这是我的错误信息:

ERROR:  could not access file "/home/pedro/.../.../example.so": Permission denied

我想可能是我的 OS 阻止了对此文件的访问,但我不想向所有用户授予权限。

tl;dr:我正在寻找一个优雅的解决方案来将我的 C 语言函数作为共享对象文件导入到我的 postgresql 数据库中。

提前致谢!

您需要授予 postgres 用户权限,因为该用户是数据库 运行 下的用户。请注意,然后您可以将 运行 函数的权限授予数据库用户(默认情况下,他们可能拥有它,除非您从 public 撤消访问权限)。