From c66be6378d8bbcea271b2d2102741fdda87ec8fe Mon Sep 17 00:00:00 2001 From: Vladimir Kirillov Date: Mon, 31 Mar 2014 17:53:00 +0800 Subject: [PATCH] postgresql: properly fix permissions issue by in postStart as per postgresql manual, interactions with psql should be carried out with the postgresql system user and postgresql db user by default. ensure it happens in postStart. --- nixos/modules/services/databases/postgresql.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/databases/postgresql.nix b/nixos/modules/services/databases/postgresql.nix index a83b1a110fed..33ee7244e3f4 100644 --- a/nixos/modules/services/databases/postgresql.nix +++ b/nixos/modules/services/databases/postgresql.nix @@ -225,14 +225,14 @@ in # Wait for PostgreSQL to be ready to accept connections. postStart = '' - while ! psql postgres -c "" 2> /dev/null; do + while ! su -s ${pkgs.stdenv.shell} postgres -c 'psql postgres -c ""' 2> /dev/null; do if ! kill -0 "$MAINPID"; then exit 1; fi sleep 0.1 done if test -e "${cfg.dataDir}/.first_startup"; then ${optionalString (cfg.initialScript != null) '' - cat "${cfg.initialScript}" | psql postgres + cat "${cfg.initialScript}" | su -s ${pkgs.stdenv.shell} postgres -c 'psql postgres' ''} rm -f "${cfg.dataDir}/.first_startup" fi