25 lines
959 B
MySQL
25 lines
959 B
MySQL
|
|
-- 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;
|