You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL调用pg_read_binary_file时权限拒绝问题排查

PostgreSQL插入图片时pg_read_binary_file权限拒绝问题排查

你遇到的错误:

ERROR: could not open file "C:/Users/User1/Documents/VS Code/Public/Ecom_Mahjong/client/src/assets/products/Shirt3.png" for reading: Permission denied

对应的SQL语句:

INSERT INTO products(product, description, price, image) VALUES ('Mahjong Hoodie', '
Stay cozy in style with our Mahjong-themed hoodie, featuring intricate tile designs and a comfortable fit for all-day gaming sessions.', 24.99, pg_read_binary_file('C:\Users\User1\Documents\VS Code\Public\Ecom_Mahjong\client\src\assets\products\Shirt3.png') );

需要检查以下几个点来解决问题:

  • PostgreSQL服务账号的文件访问权限
    PostgreSQL作为系统服务运行,使用专用系统账号(Windows下通常是NT SERVICE\postgresql-x64-XX,XX为版本号)。需给该账号授予图片文件及所有上级文件夹的读取权限:右键目标文件/文件夹 → 属性 → 安全选项卡 → 编辑 → 添加 → 输入服务账号名称 → 勾选“读取”权限 → 保存应用。

  • 文件路径格式正确性
    SQL语句里的反斜杠\需要转义为\\,或直接改用正斜杠/避免路径解析错误。比如修改为:
    'C:/Users/User1/Documents/VS Code/Public/Ecom_Mahjong/client/src/assets/products/Shirt3.png'
    或
    'C:\\Users\\User1\\Documents\\VS Code\\Public\\Ecom_Mahjong\\client\\src\\assets\\products\\Shirt3.png'

  • 检查secure_file_priv参数限制
    PostgreSQL的secure_file_priv参数会限制pg_read_binary_file的读取范围:

    1. 执行SHOW secure_file_priv;查询当前设置;
    2. 如果返回特定目录,需将图片移至该目录,或修改postgresql.conf中secure_file_priv值为''(空字符串,允许读取任意文件),之后重启PostgreSQL服务;
    3. 如果返回null,则完全禁止读取外部文件,必须修改参数后重启服务。
  • 文件是否被其他程序占用
    若目标图片正在被VS Code、图片查看器等程序打开,会导致PostgreSQL无法读取,关闭这些占用程序后再尝试执行SQL。

内容的提问来源于stack exchange,提问作者jrdaz14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:15:09