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/data
,postgres: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
答案 0 :(得分:1)
这仅需很少的故障排除步骤即可找出实际问题。
Ls - al /var/lib/pgsql/data/
ls-al / var / lib / pgsql /
尝试更改为postgres用户并访问1中的目录
#su-postgres
以下链接应将空白填入几步,以检查出情况。在#2链接上,您没有移动目录,但看到了确保目录准备就绪/可访问的步骤
https://wiki.postgresql.org/wiki/First_steps
更新
从注释中看,pg ctl以用户x ...的身份运行,并且权限不足
在不了解您的环境的情况下,最好让postgres成为运行pg ctl的用户,因为它已经在做相关的事情。
答案 1 :(得分:1)
在UNIX中,每个进程都以启动可执行文件的用户(而不是可执行文件的所有者)的权限运行(除非设置了 SETUID 标志)。
因此,拥有pg_ctl
的人并不重要,但是运行它时必须成为用户postgres
。