#!/bin/bash # Prompt for container name read -p "Enter PostgreSQL container name: " CONTAINER_NAME # Check if container is running if [ "$(docker ps -q -f name=$CONTAINER_NAME)" = "" ]; then echo "Container $CONTAINER_NAME is not running!" exit 1 fi echo "Using container: $CONTAINER_NAME" # Prompt for PostgreSQL root credentials read -p "Enter PostgreSQL root username: " PGROOT_USER # Prompt for username and database name read -p "Enter PostgreSQL username to grant privileges: " USERNAME read -p "Enter PostgreSQL database name will be granted on: " DB_NAME # Check if inputs are not empty if [ -z "$USERNAME" ] || [ -z "$DB_NAME" ]; then echo "Error: Username and database name cannot be empty" exit 1 fi # Grant all privileges echo "Granting all privileges on $DB_NAME to $USERNAME..." # Grant database privileges docker exec $CONTAINER_NAME psql -U $PGROOT_USER -c "GRANT CONNECT ON DATABASE $DB_NAME TO $USERNAME;" docker exec $CONTAINER_NAME psql -U $PGROOT_USER -c "ALTER DATABASE $DB_NAME OWNER TO $USERNAME;" docker exec $CONTAINER_NAME psql -U $PGROOT_USER -c "ALTER USER $USERNAME CREATEDB;" # Connect to the specific database and grant schema privileges docker exec $CONTAINER_NAME psql -U $PGROOT_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO $USERNAME;" docker exec $CONTAINER_NAME psql -U $PGROOT_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO $USERNAME;" docker exec $CONTAINER_NAME psql -U $PGROOT_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON SCHEMA public TO $USERNAME;" docker exec $CONTAINER_NAME psql -U $PGROOT_USER -d $DB_NAME -c "GRANT CREATE ON SCHEMA public TO $USERNAME;" docker exec $CONTAINER_NAME psql -U $PGROOT_USER -d $DB_NAME -c "GRANT CREATE ON DATABASE $DB_NAME TO $USERNAME;" # Grant default privileges for future tables and sequences docker exec $CONTAINER_NAME psql -U $PGROOT_USER -d $DB_NAME -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO $USERNAME;" docker exec $CONTAINER_NAME psql -U $PGROOT_USER -d $DB_NAME -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO $USERNAME;" if [ $? -eq 0 ]; then echo "Successfully granted all privileges" else echo "Error granting privileges" exit 1 fi