12

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

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

4 回答 4

16

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

sudo -u 用户名 pg_dump dbName > /home ..../someWhere/db.sql

使用这种技术,您的 pg_dump 将以 postgres 用户身份运行(假设那是 user_name 是谁),并且正在写入 /home... 的文件将使用运行命令的用户的权限写入(此用户可能具有不同的权限postgres 用户)。

于 2014-05-05T16:07:02.393 回答
10

尝试如下pg_dumppsql command-line

postgres=# \! pg_dump dbName -f /home ..../someWhere/db.sql
于 2014-05-05T14:43:15.783 回答
1

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

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

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

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

于 2017-08-06T14:59:46.457 回答
0

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

于 2021-07-23T11:09:51.640 回答