mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-11-04 12:51:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
-- Create CDC user with necessary privileges for Debezium
 | 
						|
-- Note: In PostgreSQL, we need to create the user first, then grant privileges
 | 
						|
 | 
						|
-- Create CDC user if it doesn't exist
 | 
						|
DO
 | 
						|
$$
 | 
						|
BEGIN
 | 
						|
    IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'CDC_USER') THEN
 | 
						|
        CREATE USER "CDC_USER" WITH PASSWORD 'CDC_PASSWORD';
 | 
						|
    END IF;
 | 
						|
END
 | 
						|
$$;
 | 
						|
 | 
						|
-- Grant necessary privileges for CDC operations
 | 
						|
-- REPLICATION privilege allows logical replication which Debezium uses
 | 
						|
ALTER USER "CDC_USER" WITH REPLICATION;
 | 
						|
 | 
						|
-- Grant CONNECT privilege on the database
 | 
						|
GRANT CONNECT ON DATABASE "DATAHUB_DB_NAME" TO "CDC_USER";
 | 
						|
 | 
						|
-- Connect to the specific database to grant table-level privileges
 | 
						|
\c DATAHUB_DB_NAME
 | 
						|
 | 
						|
-- Grant USAGE on schema (assuming public schema)
 | 
						|
GRANT USAGE ON SCHEMA public TO "CDC_USER";
 | 
						|
 | 
						|
-- Grant CREATE privilege on the database (needed for creating publications)
 | 
						|
GRANT CREATE ON DATABASE "DATAHUB_DB_NAME" TO "CDC_USER";
 | 
						|
 | 
						|
-- Grant SELECT on all current tables
 | 
						|
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "CDC_USER";
 | 
						|
 | 
						|
-- Grant SELECT on all future tables (for tables created after this script runs)
 | 
						|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO "CDC_USER";
 | 
						|
 | 
						|
-- Grant permission to create publications (required for Debezium)
 | 
						|
-- In PostgreSQL, creating publications requires either superuser or specific privileges
 | 
						|
-- For Debezium CDC, we need to be able to create and drop publications
 | 
						|
 | 
						|
-- Method 1: Grant superuser temporarily (less secure but works)
 | 
						|
ALTER USER "CDC_USER" WITH SUPERUSER;
 | 
						|
 | 
						|
 | 
						|
-- Alternative Method 2: Grant owner privileges on specific tables (more secure)
 | 
						|
-- This would require knowing the exact tables beforehand
 | 
						|
ALTER TABLE public.metadata_aspect_v2 OWNER TO "CDC_USER";
 | 
						|
ALTER TABLE public.metadata_aspect_v2 REPLICA IDENTITY FULL;
 | 
						|
 | 
						|
CREATE PUBLICATION dbz_publication FOR TABLE public.metadata_aspect_v2; |