无法在Mac OS X上启动Homebrew PostgreSQL安装 - “Permission Denied”

5

我安装了Homebrew的Postgresql,在一次崩溃后,无法再启动服务器...

如果我运行以下命令:

 $ pg_ctl start 

我理解了

pg_ctl: no database directory specified and environment variable PGDATA unset

如果我这样做

$ pg_ctl -D /Library/PostgreSQL/data start

I get

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

一切都很正常,突然间出现了这个问题。

上面的数据文件夹对于postgres用户设置了“全部”权限,对于其他人则是“无”权限。

路径看起来没问题(在我的~/.bash_profile中)。

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

很惊讶这个问题被关闭了,而不是被移动到apple.stackexchange.com或dba.stackexchange.com。 - Craig Ringer
1个回答

7
当您首次启动Pg时,是让Homebrew为您启动它,还是使用pg_ctl手动启动它?我问这个问题是因为我猜想您可能需要使用Homebrew脚本和/或使用launchd而不是直接通过pg_ctl来启动和停止Pg。我不使用Homebrew(或Mac OS X),但快速搜索表明,Pg的Homebrew安装通常通过launchd~/Library/LaunchAgents/org.postgresql.postgres.plist来启动和停止。

如果您想手动管理:

Homebrew通常以哪个用户运行PostgreSQL?如果您通过pg_ctl启动Pg,则需要以正确的用户身份运行它。从我在此处看到的其他讨论的模糊记忆中,它可能是一个名为postgrespostgres_的用户。请使用以下命令进行双重检查:

ls -ld /Library/PostgreSQL/data

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

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

...将 "postgres_" 替换为数据目录 owner。

我猜测你收到权限错误的原因可能是你没有递归应用更改。请不要这样做;而是使用正确的用户运行 Pg。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接