Skip to content

Instantly share code, notes, and snippets.

@JuanRamino
Created November 10, 2022 15:30
Show Gist options
  • Save JuanRamino/cfef6bdc3edb57e640b86ff3b2872773 to your computer and use it in GitHub Desktop.
Save JuanRamino/cfef6bdc3edb57e640b86ff3b2872773 to your computer and use it in GitHub Desktop.
DO $$
DECLARE sch RECORD;
BEGIN
EXECUTE format('GRANT CONNECT ON DATABASE %I TO %I', 'dbName', 'user');
FOR sch IN
SELECT nspname FROM pg_catalog.pg_namespace where nspname NOT IN ('pg_toast', 'pg_catalog', 'information_schema')
LOOP
EXECUTE format('GRANT USAGE ON SCHEMA %I TO %I', sch.nspname, 'user');
EXECUTE format('GRANT SELECT ON ALL TABLES IN SCHEMA %I TO %I', sch.nspname, 'user');
EXECUTE format('GRANT SELECT ON ALL SEQUENCES IN SCHEMA %I TO %I', sch.nspname, 'user');
-- EXECUTE format('GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA %I TO %I', sch.nspname, 'user');
EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT SELECT ON TABLES TO %I', sch.nspname, 'user');
EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT SELECT ON SEQUENCES TO %I', sch.nspname, 'user');
-- EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT EXECUTE ON FUNCTIONS TO %I', sch.nspname, 'user');
END LOOP;
END $$`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment