CentOS 7 pg_ctl:无法访问目录“ / var / lib / pgsql / data”:权限被拒绝

时间:2018-11-15 08:32:00

标签: postgresql centos7 pg-ctl

PostgreSQL 10.6和CentOS 7

pg_ctl status
pg_ctl: could not access directory "/var/lib/pgsql/data": Permission denied`

假设pg_ctl拥有所有权/var/lib/pgsql/datapostgres:postgres将无法访问此权限吗?

drwx------   3 postgres postgres   94 Nov 14 06:43 pgsql

如何在不创建漏洞的情况下解决此问题?为什么这会引发错误?

其他信息(编辑):

su - postgres
cd /var/lib
/var/lib/pgsql: drwx------  3 postgres postgres   94 Nov 14 06:43 pgsql
/var/lib/pgsql/10: drwx------ 4 postgres postgres  33 Nov 14 06:38 10
/var/lib/pgsql/10/data:  drwx------ 20 postgres postgres 4096 Nov 15 03:47 data

2 个答案:

答案 0 :(得分:1)

这仅需很少的故障排除步骤即可找出实际问题。

  1. 在Linux中查找该位置的用户/所有者和文件权限:
Ls - al /var/lib/pgsql/data/
     

ls-al / var / lib / pgsql /

  1. 尝试更改为postgres用户并访问1中的目录

    #su-postgres

以下链接应将空白填入几步,以检查出情况。在#2链接上,您没有移动目录,但看到了确保目录准备就绪/可访问的步骤

https://wiki.postgresql.org/wiki/First_steps

https://www.digitalocean.com/community/tutorials/how-to-move-a-postgresql-data-directory-to-a-new-location-on-ubuntu-16-04

更新

从注释中看,pg ctl以用户x ...的身份运行,并且权限不足

在不了解您的环境的情况下,最好让postgres成为运行pg ctl的用户,因为它已经在做相关的事情。

答案 1 :(得分:1)

在UNIX中,每个进程都以启动可执行文件的用户(而不是可执行文件的所有者)的权限运行(除非设置了 SETUID 标志)。

因此,拥有pg_ctl的人并不重要,但是运行它时必须成为用户postgres