我正在尝试使用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 ......
答案 0 :(得分:1)
检查目录/opt/local/var/db/postgresql90/defaultdb
。它要么不存在,要么父目录的权限不正确。运行以下命令:
sudo chown postgres:postgres /opt/local/var/db/postgresql90
答案 1 :(得分:0)
一个合理的解释是,sudoers文件配置了NOEXEC,使用sudo
启动的程序本身无法执行其他程序。 权限被拒绝正是你在这种情况下得到的。
否则,要检查的另一件事是,是否已在将使用noexec
属性挂载的分区上安装postgres。