我正在建立一个网站,但在恢复数据库 .dump 文件时遇到了一些问题。我正在使用 centos7、selinux、postgresql 9.4 和 apache2。
这是我试图移动转储的命令:
psql --single-transaction -U postgres db_name < dump_location
当我这样做时,我收到错误:
没有权限。
我错过了什么还是有什么我应该改变我的设置?如果您需要更多信息,请与我们联系。
谢谢!
我正在建立一个网站,但在恢复数据库 .dump 文件时遇到了一些问题。我正在使用 centos7、selinux、postgresql 9.4 和 apache2。
这是我试图移动转储的命令:
psql --single-transaction -U postgres db_name < dump_location
当我这样做时,我收到错误:
没有权限。
我错过了什么还是有什么我应该改变我的设置?如果您需要更多信息,请与我们联系。
谢谢!
您运行 shell 的操作系统用户没有读取路径的权限dump_location
。
请注意,这不一定是您运行的操作系统用户psql
。在这样的声明中:
sudo -u postgres psql mydb < /some/path
then/some/path
被读取为当前用户, beforesudo
,而不是 user postgres
,因为它是执行输入重定向的shellpsql
,而不是.
如果在上面的示例中,您想以用户身份读取文件,postgres
您将:
sudo -u postgres psql -f /some/path mydb
指示在启动时psql
打开和阅读/some/path
。
只需确保您使用的是正确的数据库用户,并且您至少对转储文件具有读取权限。
“psql -d -U postgres -f”
将工作。