1

我正在尝试使用 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 ......

4

2 回答 2

1

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

sudo chown postgres:postgres /opt/local/var/db/postgresql90
于 2012-10-15T18:36:10.290 回答
0

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

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

于 2012-10-16T03:26:14.937 回答