You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.7 KiB

  1. #!/bin/bash
  2. echo '####################################################################'
  3. echo '# docker_postgres_create_customer_script #'
  4. echo '# Dennis Buchhorn - bucde@b-eit.de #'
  5. echo '####################################################################'
  6. echo '# WARNING: password is clear text! #'
  7. #echo '# #'
  8. echo '####################################################################'
  9. echo ''
  10. POSTGRES_ADMIN_USER=''
  11. POSTGRES_CUSTOMER_NAME=''
  12. POSTGRES_CUSTOMER_PASSWORD=''
  13. read -p 'Enter postgres admin user name: ' POSTGRES_ADMIN_USER
  14. read -p 'Enter customer name: ' POSTGRES_CUSTOMER_NAME
  15. read -p 'Enter customer password: ' POSTGRES_CUSTOMER_PASSWORD
  16. POSTGRES_CUSTOMER_DBNAME="${POSTGRES_CUSTOMER_NAME}db"
  17. rm -f tmp
  18. touch tmp
  19. echo "CREATE ROLE "$POSTGRES_CUSTOMER_DBNAME" NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOLOGIN;" >> tmp
  20. echo "CREATE ROLE "$POSTGRES_CUSTOMER_NAME" NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT LOGIN ENCRYPTED PASSWORD '"$POSTGRES_CUSTOMER_PASSWORD"';" >> tmp
  21. echo "GRANT "$POSTGRES_CUSTOMER_DBNAME" TO "$POSTGRES_CUSTOMER_NAME";" >> tmp
  22. echo "CREATE DATABASE "$POSTGRES_CUSTOMER_DBNAME" WITH OWNER="$POSTGRES_CUSTOMER_NAME";" >> tmp
  23. echo "REVOKE ALL ON DATABASE "$POSTGRES_CUSTOMER_DBNAME" FROM public;" >> tmp
  24. cat tmp | docker exec -i postgres psql -U $POSTGRES_ADMIN_USER -d template1
  25. rm -f tmp
  26. touch tmp
  27. echo "GRANT ALL ON SCHEMA public TO "$POSTGRES_CUSTOMER_NAME" WITH GRANT OPTION;" >> tmp
  28. cat tmp | docker exec -i postgres psql -U $POSTGRES_ADMIN_USER -d $POSTGRES_CUSTOMER_DBNAME
  29. rm -f tmp
  30. echo "Database '"$POSTGRES_CUSTOMER_DBNAME"' with user '"$POSTGRES_CUSTOMER_NAME"' created."
  31. echo 'Done!'