De acuerdo con la salida de postgres, necesitas ejecutar el servidor postgres como el mismo usuario que crea la base de datos con initdb.
mr-clean:~ smurf$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "smurf".
This user must also own the server process.
Eso significa que el mismo usuario tendrá que lanzar el proceso del servidor postgres. Sin embargo, otros usuarios podrán lanzar el cliente y conectarse a él. Así que sólo tienes que hacer las tareas de "administrador" - configuración y control del demonio - con esa cuenta de propietario.
Si quieres hacer todo con el mobile
cuenta, entonces sólo tiene que ejecutar initdb
como mobile
en lugar de como admin
después de hacer el brew install postgresql
con normalidad. (No se trata de quién brew install
como eso importa, es quien initdb
as). Esto creará la base de datos, y rwx
permisos en /usr/local/var
(no /usr/local
) será suficiente para permitirlo. A continuación, haga todo su trabajo de PG como mobile
. El LaunchAgent debería funcionar con este enfoque, aunque no lo he probado.
Para permitir que varios usuarios administren efectivamente el servidor postgres (lanzar y detener el demonio), configúrelo básicamente de la misma manera, con un postgres
(o mobile
) que tanto hace la cuenta inicial initdb
y sube o baja el servidor. Entonces crea un pequeño script para ssh
a localhost
como postgres
y ejecuta el comando para subir o bajar el servidor con el mismo comando que usarías en el caso de un solo usuario. Y configure las claves ssh para que todas las cuentas que desee administrar PG puedan entrar por ssh como postgres
(es decir, catar sus claves públicas al archivo ~/.ssh/authorized_keys de postgres). Ahora usted puede tener efectivamente múltiples usuarios para manejar Postgres sin desviarse del modelo de usuario-demonio dedicado que Postgres espera y jugar con los permisos de archivo y así sucesivamente.
Esta técnica de ssh funciona para cualquier servicio que necesite ser controlado por una cuenta dedicada, y se generalizará al caso en el que estés ejecutando tus cosas en diferentes máquinas.