我使用下面的命令来备份我的数据库
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
答案 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
预先创建目录。