mirror of
https://github.com/wassname/docker-postgresql.git
synced 2026-09-11 12:10:47 +08:00
user and database can only be created on the master node
This commit is contained in:
+43
-29
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user