PostgreSQL initdb权限被拒绝,但所有者是postgres

时间:2012-10-15 18:34:05

标签: macos postgresql macports

我正在尝试使用macports安装postgresql90。我在尝试运行initdb时遇到了这个奇怪的错误:

sudo su postgres -c '/opt/local/lib/postgresql90/bin/initdb -D /opt/local/var/db/postgresql90/defaultdb'

返回此错误:

sh: /opt/local/lib/postgresql90/bin/initdb: Permission denied

所以我在想,“好吧,也许initdb上的权限被破坏了”。然后我做:

sudo ls -l /opt/local/lib/postgresql90/bin/initdb

然后回来:

-rwxr-xr-x  1 postgres  postgres  66952 25 Sep 10:06 /opt/local/lib/postgresql90/bin/initdb

所以我对initdb拥有正确的权限。我还检查了defaultdb以查看权限,他们说主人也是postgres ......

2 个答案:

答案 0 :(得分:1)

检查目录/opt/local/var/db/postgresql90/defaultdb。它要么不存在,要么父目录的权限不正确。运行以下命令:

sudo chown postgres:postgres /opt/local/var/db/postgresql90

答案 1 :(得分:0)

一个合理的解释是,sudoers文件配置了NOEXEC,使用sudo启动的程序本身无法执行其他程序。 权限被拒绝正是你在这种情况下得到的。

否则,要检查的另一件事是,是否已在将使用noexec属性挂载的分区上安装postgres。