pg_dump输出文件的“权限被拒绝”

时间:2014-01-30 13:09:01

标签: database postgresql command-line backup pg-dump

我使用下面的命令来备份我的数据库

sudo -u user_name pg_dump dbName -f /home ..../someWhere/db.sql

但它给了我这个:

pg_dump: [archiver] could not open output file "/home ..../someWhere/db.sql": Permission denied

在搜索此问题后,我发现我必须在/tmp路径下备份我的数据,但无法正常工作

我该如何解决这个问题?

提前感谢,


我正在使用Ubuntu 12.04 lts

4 个答案:

答案 0 :(得分:11)

看起来你的pg_dump工作正常,但是在以sudo用户身份打开输出文件时遇到了问题。只是猜测,但是,如果你作为用户(可能是运行pg_dump命令的那个)id进行重定向,那应该这样做,那就是:

sudo -u user_name pg_dump dbName> / home .... / someWhere / db.sql

使用这种技术,你的pg_dump将作为postgres用户运行(假设是user_name是谁),并且正在写入/ home ...的文件将使用运行该命令的用户的权限写入(该用户可能具有与postgres用户不同的权限。)

答案 1 :(得分:10)

pg_dump尝试psql command-line,如下所示:

postgres=# \! pg_dump dbName -f /home ..../someWhere/db.sql

答案 2 :(得分:0)

从psql命令行执行,如下所示

-bash-4.1$ pg_dump -Fp dbName -f /home ..../someWhere/db.sql &

-F 选择输出格式 p 是输出纯文本SQL脚本文件

最后

& 将在后台运行您的备份。

答案 3 :(得分:0)

以防万一其他人像我一样登陆这里,请注意,如果文件夹不存在,pg_dump 也会显示此错误。在这种情况下,只需使用 mkdir -p folder_name 预先创建目录。