Postgresql COPY 命令给出权限被拒绝错误
问题:Postgresql COPY 命令给出权限被拒绝错误 我正在尝试将COPY文件放入 PostgreSQL 中的表中。表所有者为postgres,文件所有者为postgres。 该文件位于/tmp中。 我仍然收到错误消息: 无法打开文件“/tmp/file”进行阅读:权限被拒绝 我不明白我做错了什么,因为我发现的所有帖子都说如果我在/tmp中有文件并且所有者是postgres,那么COPY命
问题:Postgresql COPY 命令给出权限被拒绝错误
我正在尝试将COPY
文件放入 PostgreSQL 中的表中。表所有者为postgres
,文件所有者为postgres
。
该文件位于/tmp
中。
我仍然收到错误消息:
无法打开文件“/tmp/file”进行阅读:权限被拒绝
我不明白我做错了什么,因为我发现的所有帖子都说如果我在/tmp
中有文件并且所有者是postgres
,那么COPY
命令应该可以工作。
解答
猜测:您正在使用 Fedora、Red Hat Enterprise Linux、CentOS、Scientific Linux 或默认启用SELinux的其他发行版之一。
在您的特定操作系统/版本上,PostgreSQL 的 SELinux 策略不允许服务器读取 PostgreSQL 数据目录之外的文件,或者该文件是由目标策略涵盖的服务创建的,因此它具有 PostgreSQL 不是的标签允许读取。
您可以通过以 root 身份运行来确认这是否是问题所在:
setenforce 0
然后重新测试。跑:
setenforce 1
测试后重新启用 SELinux。setenforce
不是永久的;无论如何,SELinux 将在重新启动时自动重新启用。永久禁用 SELinux 通常不是解决此类问题的好方法;如果您确认问题是 SELinux,则可以进一步探索。
由于您没有指定您正在使用的操作系统或版本、PostgreSQL 版本、您正在运行的确切命令、文件上的ls -al
、表上的\d+
等,因此很难提供更多细节,或者知道这是否不仅仅是猜测。尝试更新您的答案以包括所有这些以及文件的ls --lcontext
。
更多推荐
所有评论(0)