Files
documentazione/develop/init-db.sh

38 lines
1.5 KiB
Bash
Executable File

#!/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!"