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

Stp*_*tpn 5 database postgresql macos

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

如果我做

 $ pg_ctl start 
Run Code Online (Sandbox Code Playgroud)

我明白了

pg_ctl: no database directory specified and environment variable PGDATA unset
Run Code Online (Sandbox Code Playgroud)

如果我做

$ pg_ctl -D /Library/PostgreSQL/data start
Run Code Online (Sandbox Code Playgroud)

我明白了

pg_ctl: could not open PID file "/Library/PostgreSQL/data/postmaster.pid": Permission denied
Run Code Online (Sandbox Code Playgroud)

一切都工作得很好然后..突然之间,这个.

上面的数据文件夹的权限设置为postgres用户的"Everything"和每个人的"None".

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

export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

Cra*_*ger 6

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

如果您想手动管理它:

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

ls -ld /Library/PostgreSQL/data
Run Code Online (Sandbox Code Playgroud)

并查看拥有用户是什么,然后运行:

sudo -u postgres_ pg_ctl -D /Library/PostgreSQL/data start
Run Code Online (Sandbox Code Playgroud)

...用datadir的所有者替换"postgres_".

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