我通过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
当您第一次启动Pg时,您是让自制程序为您启动它,还是用pg_ctl
手动启动它?我这么问是因为我猜你可能需要使用自制脚本和/或使用launchd
而不是直接通过pg_ctl
来启动和停止Pg。我不太使用自制软件(或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
将"postgres_"替换为datadir的所有者。
我怀疑您出现权限错误的原因可能是您没有递归地应用更改。请不要;以正确的用户身份运行Pg。