user and database can only be created on the master node

This commit is contained in:
Sameer Naik
2015-11-28 14:22:46 +05:30
parent e6dff6ef93
commit 8458c2a3ca
+43 -29
View File
@@ -254,43 +254,57 @@ trust_localnet() {
create_user() { create_user() {
if [[ -n ${DB_USER} ]]; then if [[ -n ${DB_USER} ]]; then
if [[ -z ${DB_PASS} ]]; then case $REPLICATION_MODE in
echo "ERROR! Please specify a password for DB_USER in DB_PASS. Exiting..." slave|snapshot|backup)
exit 1 echo "INFO! Database user cannot be created on a $REPLICATION_MODE node. Skipping..."
fi ;;
echo "Creating database user: ${DB_USER}" *)
echo "CREATE ROLE \"${DB_USER}\" with LOGIN CREATEDB PASSWORD '${DB_PASS}';" | \ if [[ -z ${DB_PASS} ]]; then
exec_as_postgres ${PG_BINDIR}/postgres --single -D ${PG_DATADIR} >/dev/null 2>&1 echo "ERROR! Please specify a password for DB_USER in DB_PASS. Exiting..."
exit 1
fi
echo "Creating database user: ${DB_USER}"
echo "CREATE ROLE \"${DB_USER}\" with LOGIN CREATEDB PASSWORD '${DB_PASS}';" | \
exec_as_postgres ${PG_BINDIR}/postgres --single -D ${PG_DATADIR} >/dev/null 2>&1
;;
esac
fi fi
} }
create_database() { create_database() {
if [[ -n ${DB_NAME} ]]; then if [[ -n ${DB_NAME} ]]; then
echo -n "Creating database(s): " case $REPLICATION_MODE in
for database in $(awk -F',' '{for (i = 1 ; i <= NF ; i++) print $i}' <<< "${DB_NAME}"); do slave|snapshot|backup)
echo -n "${database} " echo "INFO! Database cannot be created on a $REPLICATION_MODE node. Skipping..."
echo "CREATE DATABASE \"${database}\";" | \ ;;
exec_as_postgres ${PG_BINDIR}/postgres --single -D ${PG_DATADIR} >/dev/null 2>&1 *)
echo -n "Creating database(s): "
for database in $(awk -F',' '{for (i = 1 ; i <= NF ; i++) print $i}' <<< "${DB_NAME}"); do
echo -n "${database} "
echo "CREATE DATABASE \"${database}\";" | \
exec_as_postgres ${PG_BINDIR}/postgres --single -D ${PG_DATADIR} >/dev/null 2>&1
if [[ ${DB_UNACCENT} == true ]]; then if [[ ${DB_UNACCENT} == true ]]; then
echo "CREATE EXTENSION IF NOT EXISTS unaccent;" | \ echo "CREATE EXTENSION IF NOT EXISTS unaccent;" | \
exec_as_postgres ${PG_BINDIR}/postgres --single ${database} -D ${PG_DATADIR} >/dev/null 2>&1 exec_as_postgres ${PG_BINDIR}/postgres --single ${database} -D ${PG_DATADIR} >/dev/null 2>&1
fi fi
if [[ -n ${DB_USER} ]]; then if [[ -n ${DB_USER} ]]; then
echo "GRANT ALL PRIVILEGES ON DATABASE \"${database}\" to \"${DB_USER}\";" | \ echo "GRANT ALL PRIVILEGES ON DATABASE \"${database}\" to \"${DB_USER}\";" | \
exec_as_postgres ${PG_BINDIR}/postgres --single -D ${PG_DATADIR} >/dev/null 2>&1 exec_as_postgres ${PG_BINDIR}/postgres --single -D ${PG_DATADIR} >/dev/null 2>&1
fi fi
done done
echo echo
;;
esac
fi fi
} }
create_replication_user() { create_replication_user() {
case $REPLICATION_MODE in if [[ -n ${REPLICATION_USER} ]]; then
slave|snapshot|backup) ;; # replication user can only be created on the master case $REPLICATION_MODE in
*) slave|snapshot|backup) ;; # replication user can only be created on the master
if [[ -n ${REPLICATION_USER} ]]; then *)
if [[ -z ${REPLICATION_PASS} ]]; then if [[ -z ${REPLICATION_PASS} ]]; then
echo "ERROR! Please specify a password for REPLICATION_USER in REPLICATION_PASS. Exiting..." echo "ERROR! Please specify a password for REPLICATION_USER in REPLICATION_PASS. Exiting..."
exit 1 exit 1
@@ -301,9 +315,9 @@ create_replication_user() {
exec_as_postgres ${PG_BINDIR}/postgres --single -D ${PG_DATADIR} >/dev/null 2>&1 exec_as_postgres ${PG_BINDIR}/postgres --single -D ${PG_DATADIR} >/dev/null 2>&1
set_hba_param "host replication ${REPLICATION_USER} 0.0.0.0/0 md5" set_hba_param "host replication ${REPLICATION_USER} 0.0.0.0/0 md5"
fi ;;
;; esac
esac fi
} }
configure_recovery() { configure_recovery() {