我通过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
答案 0 :(得分:6)
当您第一次启动Pg时,您是否让自制程序为您启动它,或者您是否使用pg_ctl
手动启动它?我问,因为我猜你可能需要使用自制程序脚本和/或使用launchd
来启动和停止Pg,而不是直接通过pg_ctl
。我不使用自制软件(或Mac OS X),但快速搜索表明自制的Pg安装通常是通过launchd
和~/Library/LaunchAgents/org.postgresql.postgres.plist
启动和停止的。
如果您想手动管理它:
自制程序通常运行PostgreSQL的用户是什么?如果您通过pg_ctl
启动Pg,则需要以正确的用户身份运行它。从我在这里看到的有关自制软件的其他讨论的模糊记忆中,它可能是名为postgres
或postgres_
的用户。仔细检查:
ls -ld /Library/PostgreSQL/data
然后查看拥有用户的内容,然后运行:
sudo -u postgres_ pg_ctl -D /Library/PostgreSQL/data start
...用datadir的所有者替换“postgres_”。
我怀疑您获得权限错误的原因是您可能没有递归地应用更改。请不要;改为将Pg作为正确的用户。