【问题标题】:Lion update removed the 'postgres' user. How to restore it?Lion 更新删除了“postgres”用户。如何恢复它?
【发布时间】:2011-10-12 10:47:36
【问题描述】:

几个月前,我使用 kyngchaos 安装程序安装了 postgres。我现在已经更新到 OSX Lion,但是数据库服务器无法启动。

在 kyngchaos 的博客 (http://www.kyngchaos.com/blog/2011/20110723_lion) 上的一条评论让我看到了 'postgres' 用户:它不再存在了!至少,我不能再“sudo su postgres”了。所以我认为这就是我的服务器无法运行的原因。

我怎样才能最好地恢复该用户?

【问题讨论】:

  • 尚未尝试重新安装,因为 kyngchaos 在他的博客上说,由于缺少用户,全新安装也无法正常工作。
  • 尝试添加用户,在这种情况下。并且可能 chown -R 相关文件夹。
  • 我首先要查找如何在 OSX 中添加用户。 Linux 的“adduser”不存在 :-)

标签: macos postgresql osx-lion


【解决方案1】:

我遇到了类似的问题,在控制台中查看 system.log,有各种关于 postgresql 数据目录权限的消息。我玩过 chown 和其他东西,但最后只是重新安装 - 现在一切正常。

【讨论】:

    【解决方案2】:

    (回答自己)

    最后,我唯一需要做的就是重新创建“postgres”用户。之前,我列出了/usr/local/pgsql/ 的内容,并看到例如data/ 目录由用户101 和组postgres 拥有。所以我想将那个 postgres 用户绑定到 101 用户 ID:

    sudo dscl . -create /Users/postgres
    sudo dscl . -create /Users/postgres UniqueID 101
    

    (然后我重新启动了我的 mac,因为我不知道如何手动启动那个 postgres 服务器...... ;-)

    【讨论】:

    • sudo -u postgres PGDATA=/usr/local/pgsql-9.0/data /usr/local/pgsql-9.0/bin/pg_ctl start 无需重启即可启动 postgresql。
    【解决方案3】:

    我认为,在您的 dscl 命令中,您不想执行-create,而是执行-append。 Apple 倾向于为守护进程用户名添加下划线前缀。因此,Apple 可能为用户 101 创建了一个 _postgres 标签。通过执行 -create,您将删除默认的 _postgres 用户,并将其替换为 postgres,这可能会导致其他问题。而如果您执行-append,那么您可以使用_postgrespostgres 来引用用户101。无论如何,您应该在执行@987654328 之前执行-list @ 或 -append,让您了解当地情况。

    注意:我仍在运行 Snow Leopard,因此无法验证用户 101 确实是 _postgres,但我希望 Apple 仍在使用与 Leopard 和 Snow Leopard 中相同的命名约定,这就是它应该的方式工作。做一个-list 会告诉你你需要知道什么来证实我的怀疑。

    【讨论】:

    • 感谢您的警告。幸运的是我事先做了那个“-list”。 一个 _postgres 用户,但它的用户 ID 为 216 之类的,而我的 postgres 目录中的用户 ID 是 101。此外,我不能再“sudo su postgres”了,所以 postgres-without-下划线用户真的消失了。我在某处读到 osx 现在包括开箱即用的 postgres,可能是为了内部的东西,所以这可能是 _postgres 用户的根本原因。
    【解决方案4】:

    在@Reinout van Rees 对 Mountain Lion 的回答之后,我没有找到合适的用户。 这些是我让它工作的步骤:

    • 下载安装Workgroup Manger
    • 登录本地 ldap:{server: 127.0.01, uname:[your unname], pw: [your pw]}
    • 设置视图->显示系统记录以显示所有帐户
    • 检查postgres不存在并且没有其他ID为101的用户。
    • 使用锁定图标解锁管理器
    • 创建新用户 {basic: {name: postgres, userid: 101, pw: None, can_admin_server: False, access_account: False}, advanced: {login_shell: /usr/bin/false}}
    • 它给出了一些奇怪的错误,但最终创建了我的用户
    • 测试 postgres (sudo -u postgres PGDATA=/usr/local/pgsql-9.0/data /usr/local/pgsql-9.0/bin/pg_ctl start)
    • >> Server started

    【讨论】:

      猜你喜欢
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2016-02-04
      • 2014-03-07
      相关资源
      最近更新 更多