PostgreSQL的转储权限被拒绝
我得到这个错误,而试图转储数据库,我进入PostgreSQL的转储权限被拒绝
linuxuser $ sudo su postgres
linuxuser $ [sudo] password for linuxuser:...
$ pg_dump -h localhost mydb >tempfile
$ sh: cannot create tempfile: Permission denied
什么问题?我刚刚安装了新鲜的postgresql。
写入postgres用户具有写权限的目录。例如/tmp
。
$ pg_dump -h localhost mydb >/tmp/tempfile
在您的尝试中,postgres用户尝试在属于其他用户的某个随机目录中创建文件。
sudo su postgres不会更改当前目录,因此您仍然在linuxuser的主目录中,并且postgres没有写入权限。 切换到不同的目录
postgres
用户
至于其他的正确答案说,该文件夹在其中您正试图保存备份没有分配给postgres
用户(操作系统用户帐户)的权限。 postgres
用户是运行备份实用程序的用户。这个用户帐号是在Postgres安装过程中创建的。您可能使用了不同的名称,但默认为postgres
。
文件夹权限
的解决方案是要么找到或创建一个文件夹其中postgres
用户读写权限。
的Mac OS X
在Mac OS X(山狮),我可以在Finder来创建这样一个文件夹。
- 在Finder中,创建一个新文件夹。选择它。
在这个例子中,我创建了一个名为postgres_backups
的文件夹。 - 选择
File
>Get Info
。 - 打开
Sharing & Permissions
部分的显示三角形。 - 单击加号按钮将另一项添加到用户列表中。
用户列表出现在“表单”对话框中。 - 从列表中选择
postgres
用户。 - 在
Privilege
列中,对于新的postgres
行,将弹出式菜单更改为Read & Write
。 - 关闭
Get Info
窗口。完成。
现在您可以将您的Postgres备份文件指向该文件夹。
顺便说一句,我使用pgAdmin的应用程序进行备份和恢复。控制并点击所需的数据库并选择Backups…
。 pgAdmin应用程序可能与您的Postgres安装捆绑在一起。
你必须要做的第一件事就是不要切换到用户postgres。使用该命令进行备份:
% mkdir backup
% chmod 0777 backup
% su postgres
[enter password]
$ cd backup
$ pg_dump mydb >tempfile
$ exit
“临时文件”将是:
pg_dump -U username -h localhost dbname > /db.sql
备份和恢复可以通过一个知道的Postgres通过在工作目录更改权限的超级用户口令的任何unpriviledged用户完成拥有postgres和同组用户
我试图在Ubuntu机器上长时间备份我的PSQL数据库,并尝试用户访问权限,超级用户状态,文件夹属性 - 这个“权限被拒绝” -很多东西。最后,有些工作非常简单。在命令:
pg_dump -U username -O dbname > 'filename.sql'
请确保您有引号(单或双引号似乎工作)围绕如下比(“>”)标志的更大的文件名。上面的例子没有引号围绕文件名。一旦我尝试过,我不再收到权限被拒绝的错误。