From 1515d0c21006f14b0244829498be9f15c0c1b2b4 Mon Sep 17 00:00:00 2001 From: szaimen Date: Tue, 15 Feb 2022 18:00:45 +0100 Subject: [PATCH] another attempt to fix the database import Signed-off-by: szaimen --- Containers/postgresql/init-user-db.sh | 4 ++-- Containers/postgresql/start.sh | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Containers/postgresql/init-user-db.sh b/Containers/postgresql/init-user-db.sh index 53bf2682..1f09770b 100644 --- a/Containers/postgresql/init-user-db.sh +++ b/Containers/postgresql/init-user-db.sh @@ -2,8 +2,8 @@ set -ex psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL - CREATE USER "oc_$POSTGRES_USER" WITH PASSWORD '$POSTGRES_PASSWORD'; - GRANT ALL PRIVILEGES ON DATABASE "$POSTGRES_DB" TO "oc_$POSTGRES_USER"; + CREATE USER "oc_$POSTGRES_USER" WITH PASSWORD '$POSTGRES_PASSWORD' CREATEDB; + ALTER DATABASE "$POSTGRES_DB" OWNER TO "oc_$POSTGRES_USER"; EOSQL set +ex diff --git a/Containers/postgresql/start.sh b/Containers/postgresql/start.sh index 4690a65d..28802762 100644 --- a/Containers/postgresql/start.sh +++ b/Containers/postgresql/start.sh @@ -61,9 +61,26 @@ if ( [ -f "$DATADIR/PG_VERSION" ] && [ "$PG_MAJOR" != "$(cat "$DATADIR/PG_VERSIO # Wait 10s for creation sleep 10s + # Set correct permissions + if grep -q "Owner: oc_admin" "$DUMP_FILE" && ! grep -q "Owner: oc_$POSTGRES_USER" "$DUMP_FILE"; then + OC_ADMIN_EXISTS=1 + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL + CREATE USER oc_admin WITH PASSWORD '$POSTGRES_PASSWORD' CREATEDB; + ALTER DATABASE "$POSTGRES_DB" OWNER TO oc_admin; +EOSQL + fi + # Restore database echo "Restoring the database from database dump" - psql "$POSTGRES_DB" -U "oc_$POSTGRES_USER" < "$DUMP_FILE" + psql "$POSTGRES_DB" -U "$POSTGRES_USER" < "$DUMP_FILE" + + # Correct permissions + if [ -n "$OC_ADMIN_EXISTS" ]; then + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL + ALTER DATABASE "$POSTGRES_DB" OWNER TO "oc_$POSTGRES_USER"; + REASSIGN OWNED BY oc_admin TO "oc_$POSTGRES_USER"; +EOSQL + fi # Shut down the database to be able to start it again pg_ctl stop -m fast