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

PSQL执行\i命令加载文件时提示Permission denied求助

解决PostgreSQL执行\i命令时的Permission Denied问题

核心原因:postgres用户无法读取目标文件,并非文件本身权限问题,而是目录遍历权限缺失或安全模块限制导致,以下是针对性解决步骤:

  • 检查并修复父目录的执行权限
    Linux系统中访问文件时,所有父目录都需要具备x(执行)权限才能遍历。/home/sheharyar这类用户主目录默认权限通常是700,仅允许当前用户访问,postgres用户根本无法进入该目录。执行以下命令为父目录添加其他用户的遍历权限:

    chmod o+x /home/sheharyar
    chmod o+x /home/sheharyar/bot
    chmod o+x /home/sheharyar/bot/code
    

    注:o+x仅开放目录遍历权限,不会泄露目录内文件的可读权限,比777更安全。

  • 排查SELinux限制(针对RHEL/CentOS/Fedora等系统)
    若系统启用SELinux,即使文件和目录权限正确,也可能阻止postgres访问用户目录下的文件。先临时关闭SELinux验证测试:

    setenforce 0
    

    若测试后权限问题消失,说明是SELinux规则限制,可添加永久规则解决:

    semanage fcontext -a -t postgresql_db_t "/home/sheharyar/bot/code/data.sql"
    restorecon -v "/home/sheharyar/bot/code/data.sql"
    
  • 安全替代方案:迁移文件至postgres可访问目录
    不想修改用户目录权限或SELinux规则的话,可直接将文件复制到postgres用户的默认可访问目录(如/var/lib/postgresql),并修改所有权:

    cp /home/sheharyar/bot/code/data.sql /var/lib/postgresql/
    chown postgres:postgres /var/lib/postgresql/data.sql
    

    之后进入psql执行\i /var/lib/postgresql/data.sql即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:02:02