-- Least-Privilege-DB-User fuer die App (wird nur bei INITIALISIERUNG -- eines leeren pgdata-Volumes automatisch ausgefuehrt). -- -- Bei BESTEHENDem Volume den User einmalig manuell anlegen: -- docker compose exec db psql -U calendar -d calendar -f - <<'SQL' -- ... (Inhalt dieses Scripts) -- SQL -- -- Der App-User darf nur in seiner Datenbank arbeiten und besitzt -- keine Superuser-Rechte (im Gegensatz zum Owner "calendar"). DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'calendar_app') THEN CREATE ROLE calendar_app LOGIN PASSWORD 'calendar_app'; END IF; END $$; GRANT CONNECT ON DATABASE calendar TO calendar_app; GRANT USAGE ON SCHEMA public TO calendar_app; GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO calendar_app; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO calendar_app; GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO calendar_app; GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO calendar_app;