几个月前,我用 kyngchaos 安装程序安装了 postgres。我现在已经更新到 OSX Lion,但数据库服务器无法启动。
对 kyngchaos 博客 ( http://www.kyngchaos.com/blog/2011/20110723_lion ) 的评论让我看到了“postgres”用户:它不再存在了!至少,我不能再“sudo su postgres”了。所以我认为这就是我的服务器无法运行的原因。
我怎样才能最好地恢复该用户?
几个月前,我用 kyngchaos 安装程序安装了 postgres。我现在已经更新到 OSX Lion,但数据库服务器无法启动。
对 kyngchaos 博客 ( http://www.kyngchaos.com/blog/2011/20110723_lion ) 的评论让我看到了“postgres”用户:它不再存在了!至少,我不能再“sudo su postgres”了。所以我认为这就是我的服务器无法运行的原因。
我怎样才能最好地恢复该用户?
(回答自己)
最后,我唯一需要做的就是重新创建“postgres”用户。之前,我列出了 的内容/usr/local/pgsql/
并看到例如该data/
目录由 user101
和 group拥有postgres
。所以我想将该 postgres 用户绑定到 101 用户 ID:
sudo dscl . -create /Users/postgres
sudo dscl . -create /Users/postgres UniqueID 101
(然后我重新启动了我的mac,因为我不知道如何手动启动那个postgres服务器......;-)
我认为,在您的 dscl 命令中-create
,您不想做 a ,而是想做一个-append
. Apple 倾向于为守护进程用户名添加下划线前缀。因此,Apple 可能为用户 101 创建了一个 _postgres 标签。通过执行-create
,您将删除默认的 _postgres 用户,并将其替换为 postgres,这可能会导致其他问题。而如果您执行 a -append
,那么您可以使用或者 引用用户 101。无论如何,您应该在执行 a_postgres
或an之前执行 a ,这样您才能了解情况。postgres
-list
-create
-append
注意:我仍在运行 Snow Leopard,因此无法验证用户 101 确实是_postgres
,但我希望 Apple 仍在使用与 Leopard 和 Snow Leopard 中相同的命名约定,这就是它应该如何工作的方式。做一个-list
会告诉你你需要知道什么来证实我的怀疑。
我遇到了类似的问题,在控制台中查看 system.log 时,有各种关于 postgresql 数据目录权限的消息。我玩过 chown 和其他东西,但最终只是重新安装 - 现在一切正常。
在@Reinout van Rees 对山狮的回答之后,我没有找到合适的用户。这些是我让它工作的步骤:
postgres
不存在,并且没有其他具有 id 的用户101
。sudo -u postgres PGDATA=/usr/local/pgsql-9.0/data /usr/local/pgsql-9.0/bin/pg_ctl start
)>> Server started