Postgresql转储权限被拒绝

Fea*_*nor 32 postgresql

我在尝试转储数据库时遇到此错误,我输入了

linuxuser $ sudo su postgres
linuxuser $ [sudo] password for linuxuser:...
$ pg_dump -h localhost mydb >tempfile
$ sh: cannot create tempfile: Permission denied
Run Code Online (Sandbox Code Playgroud)

有什么问题?我刚安装了新鲜的postgresql.

Mic*_*ker 60

写入postgres用户具有写访问权限的目录.例如/tmp.

$ pg_dump -h localhost mydb >/tmp/tempfile
Run Code Online (Sandbox Code Playgroud)

在您的尝试中,postgres用户尝试在属于另一个用户的某个随机目录中创建文件.


sho*_*sha 8

任何知道 postgres 超级用户密码的非特权用户都可以通过更改工作目录的权限来完成备份和恢复:

% mkdir backup

% chmod 0777 backup

% su postgres

[enter password]

$ cd backup

$ pg_dump mydb >tempfile

$ exit
Run Code Online (Sandbox Code Playgroud)

“tempfile”将由 postgres 拥有,并且与用户属于同一组


Dan*_*ité 6

sudo su postgres不会更改当前目录,所以你仍然在linuxuser的主目录中,而postgres没有权限写入它.切换到其他目录