bottleneckcrm/docker/postgres/init-rls-user.sql

25 lines
959 B
MySQL
Raw Normal View History

-- Create the application database user (non-superuser) for RLS enforcement.
-- This script runs automatically on first `docker compose up` via
-- PostgreSQL's /docker-entrypoint-initdb.d/ mechanism.
-- The database itself (crm_db) is created by POSTGRES_DB env var.
-- We just need to create the app user and grant privileges.
DO $$
BEGIN
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'crm_user') THEN
CREATE ROLE crm_user WITH LOGIN PASSWORD 'crm_password';
END IF;
END
$$;
-- Grant privileges on the database
GRANT ALL PRIVILEGES ON DATABASE crm_db TO crm_user;
-- Allow crm_user to create schemas and objects in the public schema
\connect crm_db;
GRANT ALL ON SCHEMA public TO crm_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO crm_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO crm_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON FUNCTIONS TO crm_user;