forked from mirrors/nixpkgs
Create the 'postgres' superuser
Old PostgreSQL installations were created using the 'root' database user. In this case, we need to create a new 'postgres' account, as we now assume that this is the superuser account. Unfortunately, these machines will be left with a 'root' user as well (which will have ownership of some databases). While PostgreSQL does let you rename superuser accounts, you can only do that when you are connected as a *different* database user. Thus we'd have to create a special superuser account to do the renaming. As we default to using ident authentication, we would have to create a system level user to do this. This all feels rather complex, so I'm currently opting to keep the 'root' user on these old machines.
This commit is contained in:
parent
c4339a029e
commit
7de29bd26f
|
@ -197,6 +197,7 @@ in
|
||||||
fi
|
fi
|
||||||
rm -f ${cfg.dataDir}/*.conf
|
rm -f ${cfg.dataDir}/*.conf
|
||||||
touch "${cfg.dataDir}/.first_startup"
|
touch "${cfg.dataDir}/.first_startup"
|
||||||
|
touch "${cfg.dataDir}/postgresql-user-created"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ln -sfn "${configFile}" "${cfg.dataDir}/postgresql.conf"
|
ln -sfn "${configFile}" "${cfg.dataDir}/postgresql.conf"
|
||||||
|
@ -230,6 +231,11 @@ in
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if ! [ -e ${cfg.dataDir}/postgresql-user-created ]; then
|
||||||
|
createuser --superuser postgres
|
||||||
|
touch ${cfg.dataDir}/postgresql-user-created
|
||||||
|
fi
|
||||||
|
|
||||||
if test -e "${cfg.dataDir}/.first_startup"; then
|
if test -e "${cfg.dataDir}/.first_startup"; then
|
||||||
${optionalString (cfg.initialScript != null) ''
|
${optionalString (cfg.initialScript != null) ''
|
||||||
cat "${cfg.initialScript}" | su -s ${pkgs.stdenv.shell} postgres -c 'psql postgres'
|
cat "${cfg.initialScript}" | su -s ${pkgs.stdenv.shell} postgres -c 'psql postgres'
|
||||||
|
|
Loading…
Reference in a new issue