函数pg_read_binary_file的权限被拒绝

permission denied for function pg_read_binary_file

提问人:Lena_96_30 提问时间:11/16/2023 最后编辑:jarlhLena_96_30 更新时间:11/16/2023 访问量:26

问:

我的 postgresql 数据库中二进制数据(bytea 中的小图像)的 SQL 插入有问题。

我目前的查询:

INSERT INTO images(image_obj, meas_id)
    VALUES (pg_read_binary_file('C:\Users\LenaK\diverses\images\001.jpg')::bytea, 4);

但是,如果我尝试执行它,则会出现错误消息

函数pg_read_binary_file的权限被拒绝

出现。我目前是超级用户。

感谢您的帮助!

postgresql sql-insert pgadmin

评论

0赞 Lena_96_30 11/16/2023
不幸的是,这不起作用......pg_read_binary_file似乎存在权限问题。我以超级用户身份执行它(我已经尝试授予该函数,但它也不起作用 --> “错误:函数名称”pg_read_binary_file“不唯一”)
0赞 Adesoji Alu 11/16/2023
所以你看,那个;我说,如果你确定权限,请尝试授予 xxxx 到 your_role_name;
0赞 Laurenz Albe 11/17/2023
与您的主张相反,您不是超级用户。尝试 ,你会得到 FALSE。超级用户永远不会收到“权限被拒绝”。SELECT usesuper FROM pg_user WHERE usename = current_user;
0赞 Lena_96_30 11/17/2023
好的,谢谢!我想我知道我的问题是什么 - 我正在使用 AWS,他们假设不给任何用户超级用户特权。这意味着我不能向我自己的用户授予或使用此函数......

答:

1赞 Richard Huxton 11/16/2023 #1

您需要关注两组权限。首先是数据库内部的权限(您可以访问函数或图像表,是否可以执行函数等)。

第二组是读取文件的进程的文件权限。执行查询的服务器进程几乎可以肯定没有访问用户目录的权限。这是一件好事,如果不先认真思考,就不应该改变。

将文件移动到一些可公开访问的目录中,或者更改所有权/权限以匹配您的 postgresql 服务器运行的任何内容。