D'après la sortie de postgres, vous devez exécuter le serveur postgres avec le même utilisateur que celui qui a créé la base de données avec 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.
Cela signifie que le même utilisateur devra lancer le processus du serveur postgres. Les autres utilisateurs pourront toujours lancer le client et s'y connecter. Il vous suffit donc d'effectuer les tâches d'"administration" - configuration et contrôle des démons - avec le compte propriétaire.
Si vous voulez tout faire avec le seul mobile
il suffit d'exécuter initdb
comme mobile
au lieu de admin
après avoir fait le brew install postgresql
comme d'habitude. (Ce n'est pas qui vous brew install
c'est ce qui compte, c'est ce que vous initdb
comme.) Cela créera la base de données, et rwx
les autorisations sur /usr/local/var
(pas /usr/local
) suffira à le permettre. Ensuite, faites tout votre travail de PG en tant que mobile
. L'agent de lancement devrait fonctionner avec cette approche, mais je ne l'ai pas testé.
Pour permettre à plusieurs utilisateurs de gérer efficacement le serveur postgres (lancer et arrêter le démon), il faut le configurer de la même manière, avec une adresse postgres
(ou mobile
) qui fait à la fois le compte initial de l initdb
et fait monter ou descendre le serveur. Créez ensuite un petit script pour ssh
à localhost
comme postgres
et exécutez la commande pour faire monter ou descendre le serveur avec la même commande que celle que vous utiliseriez dans le cas d'un utilisateur unique. Et configurez les clés ssh pour que tous les comptes que vous voulez gérer pour PG puissent se connecter en ssh en tant que postgres
(c'est-à-dire, cat leurs clés publiques dans le fichier ~/.ssh/authorized_keys de postgres). Maintenant, vous pouvez effectivement avoir plusieurs utilisateurs qui gèrent Postgres sans dévier du modèle d'utilisateur-daemon dédié que Postgres attend et en jouant avec les permissions de fichiers et ainsi de suite.
Cette technique ssh fonctionne pour tout service qui doit être contrôlé par un compte dédié, et s'applique au cas où vous faites fonctionner vos choses sur différentes machines.