我尝试恢复postgres备份时权限被拒绝

时间:2015-04-09 19:51:30

标签: postgresql debian

最近我用这个命令来备份我的postgres数据库

pg_dumpall > BkpOldPG.sql

删除旧版本的postgres后,我下载了最新版本 9.4 ,我尝试使用以下方法恢复旧数据:

mody@debian:~$ su postgres
Password: 
postgres@debian:/home/mody$
postgres@debian:/home/mody$ /usr/lib/postgresql/9.4/bin/psql -d postgres -f Documents/Bkp01dPg.sql 
Documents/Bkp01dPg.sql: Permission denied

正如您所看到的,权限被拒绝所以我尝试使用 sudo ,但它无法正常工作:

postgres@debian:/home/mody$ sudo /usr/lib/postgresql/9.4/bin/psql -d postgres -f Documents/Bkp01dPg.sql 
[sudo] password for postgres: 
postgres is not in the sudoers file.  This incident will be reported.

对此有任何帮助吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

您的备份文件或其所在的Documents文件夹具有不允许postgres用户访问的权限。

您可以为postgres用户(以及您系统上的所有其他用户)提供阅读权限:

chmod a+x Documents
chmod a+r Documents/Bkp01dPg.sql

或者,您可以将Bkp01dPg.sql复制到postgres用户已有权访问的位置,然后授予postgres用户所有权,例如

sudo cp Documents/Bkp01dPg.sql ~postgres/
sudo chown postgres ~postgres/Bkp01dPg.sql

或者您可以在普通用户帐户下运行还原,以超级用户身份连接到PostgreSQL:

psql -U postgres -f Documents/Bkp01dPg.sql

...虽然您可能需要修改pg_hba.confpg_ident.conf以允许您的用户以postgres身份进行连接(如果您这样做)。 (或者您可以临时ALTER USER为您的普通用户授予超级用户权限。

顺便说一下,您不需要supostgres。养成使用sudo -u postgres运行命令的习惯,以及sudo -u postgres -i如果你想要一个交互式命令行。

答案 1 :(得分:0)

我尝试了许多不同的解决方案来恢复postgres备份。我遇到了MacOS上被拒绝的问题,似乎没有解决方案。

这就是我的工作方式:

Postgres随附Pgadmin4。如果使用macOS,则可以按CMD + SPACE并键入pgadmin4来运行它。这将在Chrome中打开一个浏览器标签。

  

如果在使pgadmin4正常工作时遇到错误,请在终端中尝试killall pgAdmin4,然后重试。


获取pgadmin4 +备份/还原的步骤

1。创建备份

通过右键单击数据库->“备份”来完成此操作

enter image description here

2。给文件起一个名字。

类似于test12345。单击备份。这将创建一个二进制文件转储,它不是.sql格式

enter image description here

3。查看下载位置

屏幕的右下角应该有一个弹出窗口。点击“更多详细信息”页面,查看备份下载到的位置

enter image description here

4。找到下载文件的位置

在这种情况下,它是/users/vincenttang

enter image description here

5。从pgadmin恢复备份

假设您正确执行了步骤1到步骤4,您将拥有一个还原二进制文件。有时您的同事希望在其本地计算机上使用您的还原文件。说过有人去pgadmin并恢复

通过右键单击数据库->“恢复”来完成此操作

enter image description here

6。选择文件查找器

确保手动选择文件位置,请勿将文件拖放到pgadmin的上载器字段中。因为您会遇到错误权限。而是找到您刚刚创建的文件:

enter image description here

7。找到所说的文件

您可能必须将右下角的过滤器更改为“所有文件”。此后,从第4步中找到文件。现在,点击右下角的“选择”按钮进行确认

enter image description here

8。恢复所说的文件

您将再次看到此页面,其中包含选定文件的位置。继续并还原它

enter image description here

9。成功

如果一切正常,则右下角应弹出一个指示恢复成功的指示器。您可以导航到表以查看每个表上的数据是否已正确还原。

10。如果不成功:

如果步骤9失败,请尝试删除数据库上的旧公共模式。转到“查询工具”

enter image description here

执行此代码块:

DROP SCHEMA public CASCADE; CREATE SCHEMA public;

enter image description here

现在再次尝试步骤5到9,应该可以解决

摘要

当我遇到错误权限问题并且无法以超级用户身份登录时,这就是我必须在Postgres上备份/还原备份的方式。或使用chmod设置文件夹的读/写凭据。