当我尝试恢复 postgres 备份时权限被拒绝
Permission denied when I try to restore postgres backup
最近我用这个命令备份了我的 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
如您所见,我得到 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.
有什么帮助吗?
谢谢!
您的备份文件或其所在的 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.conf
或 pg_ident.conf
以允许您的用户以 postgres
的身份连接,如果您这样做的话。 (或者你可以临时 ALTER USER
给你的普通用户超级用户权限)。
顺便说一下,您不需要 su
到 postgres
。养成使用 sudo -u postgres
到 运行 命令的习惯,如果需要交互式命令行,请养成使用 sudo -u postgres -i
的习惯。
我尝试了许多不同的解决方案来恢复我的 postgres 备份。我 运行 在 MacOS 上遇到权限被拒绝的问题,似乎没有解决方案。
这是我如何让它工作的:
Postgres 自带 Pgadmin4。如果您使用 macOS,您可以按 CMD
+SPACE
并输入 pgadmin4
到 运行。这将在 chrome 中打开一个浏览器选项卡。
If you run into errors getting pgadmin4 to work, try killall pgAdmin4
in your terminal, then try again.
获取 pgadmin4 的步骤 + backup/restore
1。创建备份
右键单击数据库 -> "backup"
2。为文件命名。
喜欢test12345
。单击备份。这会创建一个二进制文件转储,它不是 .sql
格式
3。查看下载位置
屏幕右下角应该有一个弹出窗口。单击 "more details" 页面查看备份下载到的位置
4。找到下载文件的位置
在这种情况下,它是 /users/vincenttang
5。从 pgadmin
恢复备份
假设您正确执行了步骤 1 到 4,您将拥有一个还原二进制文件。有时您的同事可能想在他们的本地计算机上使用您的还原文件。有人说去 pgadmin 并恢复
右键单击数据库 -> "restore"
6。 Select 文件查找器
确保手动 select 文件位置,不要将文件拖放到 pgadmin 的上传者字段中。因为你会运行进入错误权限。相反,找到您刚刚创建的文件:
7。找到所述文件
您可能需要将右下角的过滤器更改为 "All files"。然后找到文件,从第 4 步开始。现在点击右下角的 "Select" 按钮确认
8。恢复所述文件
您将再次看到此页面,其中包含 selected 文件的位置。继续恢复它
9。成功
如果一切正常,右下角应该会弹出恢复成功的提示。您可以导航到您的 table 以查看每个 table.
上的数据是否已恢复 属性
10。如果不成功:
如果第 9 步失败,请尝试删除数据库中的旧 public 架构。转到 "Query Tool"
执行此代码块:
DROP SCHEMA public CASCADE; CREATE SCHEMA public;
现在再次尝试第 5 步到第 9 步,应该可以了
总结
当我遇到错误权限问题并且无法以超级用户身份登录时,这就是我必须 backup/restore 在 Postgres 上进行备份的方式。或者使用 chmod
为文件夹设置 read/write 的凭据。
最近我用这个命令备份了我的 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
如您所见,我得到 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.
有什么帮助吗?
谢谢!
您的备份文件或其所在的 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.conf
或 pg_ident.conf
以允许您的用户以 postgres
的身份连接,如果您这样做的话。 (或者你可以临时 ALTER USER
给你的普通用户超级用户权限)。
顺便说一下,您不需要 su
到 postgres
。养成使用 sudo -u postgres
到 运行 命令的习惯,如果需要交互式命令行,请养成使用 sudo -u postgres -i
的习惯。
我尝试了许多不同的解决方案来恢复我的 postgres 备份。我 运行 在 MacOS 上遇到权限被拒绝的问题,似乎没有解决方案。
这是我如何让它工作的:
Postgres 自带 Pgadmin4。如果您使用 macOS,您可以按 CMD
+SPACE
并输入 pgadmin4
到 运行。这将在 chrome 中打开一个浏览器选项卡。
If you run into errors getting pgadmin4 to work, try
killall pgAdmin4
in your terminal, then try again.
获取 pgadmin4 的步骤 + backup/restore
1。创建备份
右键单击数据库 -> "backup"
2。为文件命名。
喜欢test12345
。单击备份。这会创建一个二进制文件转储,它不是 .sql
格式
3。查看下载位置
屏幕右下角应该有一个弹出窗口。单击 "more details" 页面查看备份下载到的位置
4。找到下载文件的位置
在这种情况下,它是 /users/vincenttang
5。从 pgadmin
恢复备份假设您正确执行了步骤 1 到 4,您将拥有一个还原二进制文件。有时您的同事可能想在他们的本地计算机上使用您的还原文件。有人说去 pgadmin 并恢复
右键单击数据库 -> "restore"
6。 Select 文件查找器
确保手动 select 文件位置,不要将文件拖放到 pgadmin 的上传者字段中。因为你会运行进入错误权限。相反,找到您刚刚创建的文件:
7。找到所述文件
您可能需要将右下角的过滤器更改为 "All files"。然后找到文件,从第 4 步开始。现在点击右下角的 "Select" 按钮确认
8。恢复所述文件
您将再次看到此页面,其中包含 selected 文件的位置。继续恢复它
9。成功
如果一切正常,右下角应该会弹出恢复成功的提示。您可以导航到您的 table 以查看每个 table.
上的数据是否已恢复 属性10。如果不成功:
如果第 9 步失败,请尝试删除数据库中的旧 public 架构。转到 "Query Tool"
执行此代码块:
DROP SCHEMA public CASCADE; CREATE SCHEMA public;
现在再次尝试第 5 步到第 9 步,应该可以了
总结
当我遇到错误权限问题并且无法以超级用户身份登录时,这就是我必须 backup/restore 在 Postgres 上进行备份的方式。或者使用 chmod
为文件夹设置 read/write 的凭据。