Initial commit
This commit is contained in:
50
backend/postgres/scripts/grant-prvlgs.sh
Executable file
50
backend/postgres/scripts/grant-prvlgs.sh
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user