我按照使用 Brew 在 Mac OS X 上安装 Postgres 的说明进行操作。一切运作良好。我在我的 .plist 中放置了一个 .plist,Library/LaunchAgents
并在我登录时运行了 Postgres。但是,当我注销时,postgres 关闭(这是用户Library/LaunchAgents
目录中由 launchd 启动的进程的正确行为)。
我想让数据库一直为所有用户运行,所以我尝试将我的文件 homebrew.mxcl.postgresql.plist 移动到目录/Library/LaunchDaemons
中。我将 owner:group 设置为 root:wheel 并设置权限。这不起作用,因为 Postgres 说它不会以 root 身份运行(在日志文件中报告/usr/local/var/log
)。所以我为每个添加了一个 UserName 和 GroupName 为 _postgres。它不会运行,我相信存在权限问题,我收集到的 postgres 作为 postgres 运行的 postgres 运行为 user:group of _postgres:_postgres 无法读取其中的文件,/usr/local/var/postgres
或者/usr/local/var/log
这些文件都是 sholland:admin for user:group (brew 安装我的用户名 holland 和组管理员下的文件)。我将 UserName 更改为 sholland 并将 GroupName 更改为 admin in/Library/LaunchDaemons/homebrew.mxcl.postgresql.plist
,现在 postgres 以用户 sholland group admin 的身份在每次重新启动时都能愉快地运行。
这一切都很好,但我想在用户 _postgres 下运行 Postgres。我想我可以sudo chown _postgre:_postgres *
在 /usr/local/var/log 和 /usr/local/var/postgres 中使用,但我不知道如果我走那条路是否还有其他问题。如果 brew 使用 user:group _postgres:_postgres 而不是在我的用户名和组 admin 下进行安装,似乎一切都会更干净。
能够将 homebrew.mxcl.postgresql.plist 中的 user:group 设置为 _postgres:_postgres 的动机是我将把项目迁移到我医院服务器上的 linux 系统上,我将使用 Django 运行报告生成器和我的 GI 组的患者跟踪系统。我将需要在它自己的用户:组下运行 postgres,以在该环境中保留我个人用户 ID 以外的权限。
那么,如何在 Mac OS X 下 brew 安装用户 _postgres 下的 postgres 呢?