【问题标题】:Restoring .dump file - "Permission Denied"恢复 .dump 文件 - “权限被拒绝”
【发布时间】:2015-09-29 16:53:33
【问题描述】:

我正在建立一个网站,但在恢复数据库 .dump 文件时遇到了一些问题。我正在使用 centos7、selinux、postgresql 9.4 和 apache2。

这是my pg_hba.conf file

这是我试图移动转储的命令:

psql --single-transaction -U postgres db_name < dump_location

当我这样做时,我得到了错误:

权限被拒绝。

是我遗漏了什么还是我应该改变我的设置?如果您需要更多信息,请告诉我。

谢谢!

【问题讨论】:

  • 您应该发布整个错误消息,因为它是由 psql 输出的。
  • 您在运行该命令时以哪个 Linux 用户身份登录?如果你自己给psql -U postgres db_name,你能得到一个psql提示吗?
  • @Harmic 如果我自己给出 psql -U postgres db_name ,我可以得到一个 psql 提示。我在登录时以 postgres 用户身份登录
  • @Mike 这是完整消息的样子:bash-4.2$ psql --single-transaction db_name
  • 然后看起来@Craig 是正确的,你没有对该文件或当前目录的权限。这不是 psql 问题,而是 linux 文件系统权限问题。

标签: postgresql centos psql postgresql-9.4 pg-restore


【解决方案1】:

您运行 shell 的操作系统用户没有读取路径 dump_location 的权限。

请注意,这不一定是您运行psql 的操作系统用户。在这样的声明中:

sudo -u postgres psql mydb < /some/path

然后/some/path 被读取为当前用户,在sudo 之前,而不是用户postgres,因为执行输入重定向的是 shell,不是psql

如果在上面的示例中,您想以用户 postgres 的身份读取文件,您会:

sudo -u postgres psql -f /some/path mydb

这会指示psql 在启动时打开并读取/some/path

【讨论】:

  • 当我使用 ls -lZ file.dump 检查权限时,我得到以下信息:-rw-r--r--。这不是意味着所有其他用户都有读取权限吗?
  • 我好像已经回答了自己的问题:file.dump存放的目录有以下权限:drwx------。我将尝试使用 chmod 更改它。
【解决方案2】:

只需确保您使用的是正确的数据库用户,并且您至少对转储文件具有读取权限。

"psql -d -U postgres -f"

会起作用的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 2012-11-24
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2017-06-28
    • 2017-12-25
    • 2016-10-01
    相关资源
    最近更新 更多