#!/bin/bash echo '####################################################################' echo '# docker_postgres_create_customer_script #' echo '# Dennis Buchhorn - bucde@b-eit.de #' echo '####################################################################' echo '# WARNING: password is clear text! #' #echo '# #' echo '####################################################################' echo '' POSTGRES_CONTAINER_NAME="" POSTGRES_ADMIN_USER='' POSTGRES_CUSTOMER_NAME='' POSTGRES_CUSTOMER_PASSWORD='' read -p "Enter postgres container name: " POSTGRES_CONTAINER_NAME read -p 'Enter postgres admin user name: ' POSTGRES_ADMIN_USER read -p 'Enter customer name: ' POSTGRES_CUSTOMER_NAME read -p 'Enter customer password: ' POSTGRES_CUSTOMER_PASSWORD POSTGRES_CUSTOMER_DBNAME="${POSTGRES_CUSTOMER_NAME}db" rm -f tmp touch tmp echo "CREATE ROLE "$POSTGRES_CUSTOMER_DBNAME" NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOLOGIN;" >> tmp echo "CREATE ROLE "$POSTGRES_CUSTOMER_NAME" NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT LOGIN ENCRYPTED PASSWORD '"$POSTGRES_CUSTOMER_PASSWORD"';" >> tmp echo "GRANT "$POSTGRES_CUSTOMER_DBNAME" TO "$POSTGRES_CUSTOMER_NAME";" >> tmp echo "CREATE DATABASE "$POSTGRES_CUSTOMER_DBNAME" WITH OWNER="$POSTGRES_CUSTOMER_NAME";" >> tmp echo "REVOKE ALL ON DATABASE "$POSTGRES_CUSTOMER_DBNAME" FROM public;" >> tmp cat tmp | docker exec -i $POSTGRES_CONTAINER_NAME psql -U $POSTGRES_ADMIN_USER -d template1 rm -f tmp touch tmp echo "GRANT ALL ON SCHEMA public TO "$POSTGRES_CUSTOMER_NAME" WITH GRANT OPTION;" >> tmp cat tmp | docker exec -i $POSTGRES_CONTAINER_NAME psql -U $POSTGRES_ADMIN_USER -d $POSTGRES_CUSTOMER_DBNAME rm -f tmp echo "Database '"$POSTGRES_CUSTOMER_DBNAME"' with user '"$POSTGRES_CUSTOMER_NAME"' created." echo 'Done!'