Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kpzt3-0005DQ-9K for pgsql-admin@arkaria.postgresql.org; Thu, 17 Dec 2020 20:28:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kpzt2-0000hv-93 for pgsql-admin@arkaria.postgresql.org; Thu, 17 Dec 2020 20:28:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kpzt2-0000ho-1g for pgsql-admin@lists.postgresql.org; Thu, 17 Dec 2020 20:28:32 +0000 Received: from mail-oi1-x234.google.com ([2607:f8b0:4864:20::234]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1kpzt0-0002mp-9T for pgsql-admin@lists.postgresql.org; Thu, 17 Dec 2020 20:28:31 +0000 Received: by mail-oi1-x234.google.com with SMTP id d189so314753oig.11 for ; Thu, 17 Dec 2020 12:28:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=Tmj/tAXfrkcWU7HrofjvaT8bmqwjL1losRSkQr0CGgU=; b=dlR7UvgFkP0MfbF+fIozgv6X2z0N7+QcHrbW98MR4sDC3djZ5v1AfrGFxM8RIzNEHc y8dKILxtpS1xo8c1ticPvmeqASbF2bT6n4cvc6nnHsgJzDjFpSdUS4fdwoUK8jybzA7e 1PbGh9qSgV2Cb1WNYXM+tS7K5dXD4s91JIOGB9n2UY9zt0I7e8k4e24cIQoqfNu8Yz9p VWKHjfHm8hajc4Qe91cOSEO9fCw1SJwVl0sMWY+caGOuOMFlC+I+LhyG1fiLe0f4TG9h tCPyu4HC/8ycq8nZ+U4UdReYnWWJOj69ynouUIp5lPtEEAtkZHtsjrXukdPDyMyzQZCG f4CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=Tmj/tAXfrkcWU7HrofjvaT8bmqwjL1losRSkQr0CGgU=; b=Lo9e6HmNE8X4tnaTyZkWMe6r6fXhH0uQt/jBypWJvmNvUDNija8o2x3uvTZNsZ1I/Y WGMzi/miCR2Qz+hPBHbrcXxyxI/TPbskFfnGTwY/mHRNjduwB9i+C4l+zTOvRA4/3QtQ sgGTkwOYodsqrSd8iIPqrYQlt0BqqDS/M9srrT2pIYm/5sbMWi0k44Van+J8V+1MlaUI PUq/fL1C7jwvi1+5UQaklHTTlJ3TBxqSpGEgOwnkVzIzRS2kmizMw3Ag5WhOU8jrevuc sLJeLJY4VjuW4it21QSvC5xUqCsXGEjbkcJuEyoPf/8nrgBwdBsKX8YMBvWeKNX84POk c62w== X-Gm-Message-State: AOAM532jd6USKpwrYoCSZJltUE5YEDJg1ZMA4WTA+xchaZhXbesPzsyr FWUs0MOjPM9KCuyekAzzk1amLyukxRjiYg== X-Google-Smtp-Source: ABdhPJyk3pfp7gvv6Ush7biuQQMT1oil296jRgTvl7gTLNFI9gYl2juXPt6Y1KfqkLkcB727BoGSLQ== X-Received: by 2002:aca:aa83:: with SMTP id t125mr652767oie.103.1608236908209; Thu, 17 Dec 2020 12:28:28 -0800 (PST) Received: from [192.168.1.10] (ip174-67-141-204.no.no.cox.net. [174.67.141.204]) by smtp.googlemail.com with ESMTPSA id t186sm1324485oif.1.2020.12.17.12.28.27 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 17 Dec 2020 12:28:27 -0800 (PST) Subject: Re: Grant request To: pgsql-admin@lists.postgresql.org References: From: Ron Message-ID: <42b91260-6a9d-047b-6d57-29d649911c7d@gmail.com> Date: Thu, 17 Dec 2020 14:28:26 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 12/17/20 1:24 PM, Ron Watkins wrote: > I have a Azure production server, and a group of users is requesting > select permissions for all tables, views, sequences, etc. > This is for all existing and all new objects in all schemas in the database. > I don't see any kind of "db_datareader" role. Suggestions? First create a group role: \c postgresql CREATE ROLE db_datareader LOGIN INHERIT PASSWORD "random_horse"; GRANT CONNECT ON DATABASE somedb TO db_datareader; \c somedb GRANT USAGE ON SCHEMA public TO db_datareader; GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_datareader; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO db_datareader; GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA public TO db_datareader; GRANT EXECUTE ON ALL ROUTINES IN SCHEMA public TO db_datareader; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT EXECUTE ON FUNCTIONS TO db_datareader; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT EXECUTE ON ROUTINES TO db_datareader; Then create a bunch of users in that role: CREATE ROLE fred IN ROLE db_datareader LOGIN INHERIT PASSWORD 'blahblah' VALID UNTIL 'xyz'; CREATE ROLE wilma IN ROLE db_datareader LOGIN INHERIT PASSWORD 'snarf' VALID UNTIL 'xyz'; CREATE ROLE barney IN ROLE db_datareader LOGIN INHERIT PASSWORD 'foobar' VALID UNTIL 'xyz' CREATE ROLE betty IN ROLE db_datareader LOGIN INHERIT PASSWORD 'blarg' VALID UNTIL 'xyz'; -- Angular momentum makes the world go 'round.