无法在Mac OS X上启动Homebrew PostgreSQL安装 - “权限被拒绝”

时间:2012-07-15 19:31:55

标签: database macos postgresql

我通过Homebrew安装了Postgresql,崩溃后我再也无法启动服务器..

如果我这样做

 $ pg_ctl start 

我得到了

pg_ctl: no database directory specified and environment variable PGDATA unset

如果我这样做

$ pg_ctl -D /Library/PostgreSQL/data start

我得到了

pg_ctl: could not open PID file "/Library/PostgreSQL/data/postmaster.pid": Permission denied

一切都很好,然后......出乎意料的是,这个。

上面的数据文件夹为postgres用户设置了“Everything”权限,为每个人设置了“None”..

路径看起来很好(在我的〜/ .bash_profile中)

export PATH=/usr/local/bin:$PATH

1 个答案:

答案 0 :(得分:6)

当您第一次启动Pg时,您是否让自制程序为您启动它,或者您是否使用pg_ctl手动启动它?我问,因为我猜你可能需要使用自制程序脚本和/或使用launchd来启动和停止Pg,而不是直接通过pg_ctl。我不使用自制软件(或Mac OS X),但快速搜索表明自制的Pg安装通常是通过launchd~/Library/LaunchAgents/org.postgresql.postgres.plist启动和停止的。

如果您想手动管理它:

自制程序通常运行PostgreSQL的用户是什么?如果您通过pg_ctl启动Pg,则需要以正确的用户身份运行它。从我在这里看到的有关自制软件的其他讨论的模糊记忆中,它可能是名为postgrespostgres_的用户。仔细检查:

ls -ld /Library/PostgreSQL/data

然后查看拥有用户的内容,然后运行:

sudo -u postgres_ pg_ctl -D /Library/PostgreSQL/data start

...用datadir的所有者替换“postgres_”。

我怀疑您获得权限错误的原因是您可能没有递归地应用更改。请不要;改为将Pg作为正确的用户。