#!/bin/bash set -e # Funzione per creare un database e un utente limitato # Argomenti: NOME_DB, NOME_UTENTE, PASSWORD_UTENTE create_limited_user_and_db() { local database=$1 local user=$2 local password=$3 echo " Configurazione database: $database per l'utente: $user" psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "postgres" <<-EOSQL CREATE DATABASE $database; CREATE USER $user WITH PASSWORD '$password'; \c $database REVOKE ALL ON SCHEMA public FROM PUBLIC; GRANT USAGE ON SCHEMA public TO $user; GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO $user; GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO $user; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO $user; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO $user; EOSQL } echo "Inizio inizializzazione database multipli..." # 1. Database per Keycloak (L'utente admin ha già i permessi perché proprietario del DB principale) # Non serve crearlo qui se è già definito in POSTGRES_DB nel docker-compose, # ma assicuriamoci che esista. echo "Verifica database Keycloak..." # 2. Creazione Microservizi con permessi LIMITATI (Sola gestione DATI, no struttura) # Formato: nome_db, nome_utente, password create_limited_user_and_db "negozi" "user_negozi" "Anker26!" create_limited_user_and_db "keycloak" "user_keycloak" "Anker26!" echo "Inizializzazione completata con successo!"