#!/bin/sh set -eu psql \ --set ON_ERROR_STOP=1 \ --set app_user="$APP_DATABASE_USER" \ --set app_password="$APP_DATABASE_PASSWORD" \ --username "$POSTGRES_USER" \ --dbname "$POSTGRES_DB" <<'SQL' SELECT format( 'CREATE ROLE %I LOGIN PASSWORD %L NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOBYPASSRLS', :'app_user', :'app_password' ) \gexec SELECT format('GRANT CONNECT ON DATABASE %I TO %I', current_database(), :'app_user') \gexec SELECT format('GRANT USAGE ON SCHEMA public TO %I', :'app_user') \gexec SELECT format( 'ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO %I', :'app_user' ) \gexec SELECT format( 'ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO %I', :'app_user' ) \gexec SQL