我得到这个错误,而试图转储数据库,我进入
linuxuser $ sudo su postgres
linuxuser $ [sudo] password for linuxuser:...
$ pg_dump -h localhost mydb >tempfile
$ sh: cannot create tempfile: Permission denied
有什么问题?我刚刚安装了新的PostgreSQL。
我得到这个错误,而试图转储数据库,我进入
linuxuser $ sudo su postgres
linuxuser $ [sudo] password for linuxuser:...
$ pg_dump -h localhost mydb >tempfile
$ sh: cannot create tempfile: Permission denied
有什么问题?我刚刚安装了新的PostgreSQL。
7条答案
按热度按时间vsaztqbk1#
写入postgres用户有写权限的目录。例如
/tmp
。在你的尝试中,postgres用户试图在属于另一个用户的某个随机目录中创建一个文件。
mm5n2pyu2#
备份和恢复可以由任何知道postgres超级用户密码的非特权用户通过更改工作目录上的权限来完成:
“tempfile”将由postgres拥有,并且与用户属于同一个组
cczfrluj3#
sudo su postgres不会改变当前目录,所以你仍然在linuxuser的home目录中,postgres没有写入它的权限。更改到其他目录
ajsxfq5m4#
postgres
用户正如其他正确答案所说,您试图在其中保存备份的文件夹没有分配给
postgres
用户(操作系统用户帐户)的权限。postgres
用户是运行备份实用程序的用户。此用户帐户是在Postgres安装过程中创建的。您可能使用了不同的名称,但默认名称为postgres
。带文件夹
解决方案是查找或创建一个
postgres
用户具有读写权限的文件夹。Mac OS X
在Mac OS X(Mountain Lion)中,我可以在Windows中创建这样一个文件夹。
1.在目录中,创建新文件夹。选择它.
在这个例子中,我创建了一个名为
postgres_backups
的文件夹。1.选择
File
>Get Info
。1.打开
Sharing & Permissions
部分的显示三角形。1.单击加号按钮可将另一项添加到用户列表中。
用户列表出现在“工作表”对话框中。
1.从列表中选择
postgres
用户。1.在
Privilege
列中,对于新的postgres
行,将弹出菜单更改为Read & Write
。1.关闭
Get Info
窗口。完了现在您可以将Postgres备份文件定向到该文件夹。
顺便说一下,我使用pgAdmin应用程序来进行备份和恢复。Control+单击所需的数据库并选择
Backups…
。pgAdmin应用程序可能与您的Postgres安装捆绑在一起。wxclj1h55#
你要做的第一件事是不要切换到用户postgres。使用此命令进行备份:
e5njpo686#
对我来说,我必须在结尾写一个完整的文件名,比如dump.sql,比如ewithe5。
nwlqm0z17#
我在Ubuntu机器上长时间尝试备份我的PSQL数据库时,一直在努力解决这个“权限被拒绝”的问题,并尝试了用户访问权限、超级用户状态、文件夹属性--很多东西。最后,一个简单得可笑的方法奏效了。在命令中:
确保你有引号(单引号或双引号似乎工作)周围的文件名,其次是大于(“>”)的迹象。上面的例子在文件名周围没有引号。一旦我尝试了,我不再收到权限拒绝错误。