5

我通过 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
4

1 回答 1

7

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

如果要手动管理:

homebrew 通常以什么用户身份运行 PostgreSQL?如果您通过启动 Pg,pg_ctl您需要以正确的用户身份运行它。从我在这里看到的关于 homebrew 的其他讨论的模糊记忆中,它可能是一个名为postgresor的用户postgres_。使用以下命令进行仔细检查:

ls -ld /Library/PostgreSQL/data

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

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

...用数据目录的所有者替换“postgres_”。

我怀疑您收到权限错误的原因是您可能没有递归应用更改。请不要;改为以正确的用户身份运行 Pg。

于 2012-07-16T01:24:07.463 回答