我正在建立一个网站,但在恢复数据库.dump文件时遇到了一些问题。我正在使用centos7,selinux,postgresql 9.4和apache2。
这是我试图移动转储的命令:
psql --single-transaction -U postgres db_name < dump_location
当我这样做时,我收到错误:
许可被拒绝。
我是否遗漏了某些东西,或者有什么东西我应该改变我的设置?如果您需要更多信息,请与我们联系。
谢谢!
答案 0 :(得分: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
启动时开启并阅读。{/ p>
答案 1 :(得分:0)
只需确保您使用的是正确的数据库用户,并且您至少具有转储文件的读取权限。
&#34; psql -d -U postgres -f&#34;
会奏效。