Thread: Drop role cascade ?

Drop role cascade ?

From
David Gauthier
Date:
psql (11.5, server 11.3) on linux

Someone who had privileges in a lot of tables/schemas/DBs left the company.  I want to drop that role but "rop role xxx" won't let me because...  "xxx cannot be dropped because some objects depend on it".  

Is there a way to just get rid of this role without revoking xxx in all the individual DB objects he has privs too?  Something like "drop role xxx cascade" ?

Re: Drop role cascade ?

From
Adrian Klaver
Date:
On 11/17/22 15:07, David Gauthier wrote:
> psql (11.5, server 11.3) on linux
> 
> Someone who had privileges in a lot of tables/schemas/DBs left the 
> company.  I want to drop that role but "rop role xxx" won't let me 
> because...  "xxx cannot be dropped because some objects depend on it".
> 
> Is there a way to just get rid of this role without revoking xxx in all 
> the individual DB objects he has privs too?  Something like "drop role 
> xxx cascade" ?

1) You might want to confirm that removing that role is not going to 
leave you a bind where the objects do not have the necessary privileges 
to complete their tasks.

2) From here :

https://www.postgresql.org/docs/current/sql-droprole.html

"A role cannot be removed if it is still referenced in any database of 
the cluster; an error will be raised if so. Before dropping the role, 
you must drop all the objects it owns (or reassign their ownership) and 
revoke any privileges the role has been granted on other objects. The 
REASSIGN OWNED and DROP OWNED commands can be useful for this purpose; 
see Section 22.4 for more discussion."

So you should take a look at:

https://www.postgresql.org/docs/current/sql-reassign-owned.html



-- 
Adrian Klaver
adrian.klaver@aklaver.com




Re: Drop role cascade ?

From
Tom Lane
Date:
David Gauthier <dfgpostgres@gmail.com> writes:
> Someone who had privileges in a lot of tables/schemas/DBs left the
> company.  I want to drop that role but "rop role xxx" won't let me
> because...  "xxx cannot be dropped because some objects depend on it".

> Is there a way to just get rid of this role without revoking xxx in all
> the individual DB objects he has privs too?  Something like "drop role xxx
> cascade" ?

Not directly, but see REASSIGN OWNED and DROP OWNED.

            regards, tom lane



Re: Drop role cascade ?

From
Ron
Date:
On 11/17/22 17:16, Tom Lane wrote:
> David Gauthier <dfgpostgres@gmail.com> writes:
>> Someone who had privileges in a lot of tables/schemas/DBs left the
>> company.  I want to drop that role but "rop role xxx" won't let me
>> because...  "xxx cannot be dropped because some objects depend on it".
>> Is there a way to just get rid of this role without revoking xxx in all
>> the individual DB objects he has privs too?  Something like "drop role xxx
>> cascade" ?
> Not directly, but see REASSIGN OWNED and DROP OWNED.

SIMULATE and VERBOSE options would be handy, to see what those commands 
would actually do.

-- 
Angular momentum makes the world go 'round.



Re: Drop role cascade ?

From
Tom Lane
Date:
Ron <ronljohnsonjr@gmail.com> writes:
> On 11/17/22 17:16, Tom Lane wrote:
>> Not directly, but see REASSIGN OWNED and DROP OWNED.

> SIMULATE and VERBOSE options would be handy, to see what those commands 
> would actually do.

Hmph.  I'm surprised to realize that those commands don't produce
trace output comparable to DROP CASCADE.  If they did, this need
would be met by the traditional hack of "BEGIN; DROP ...; ROLLBACK".

            regards, tom lane



Re: Drop role cascade ?

From
Ron
Date:
On 11/17/22 17:57, Tom Lane wrote:
> Ron <ronljohnsonjr@gmail.com> writes:
>> On 11/17/22 17:16, Tom Lane wrote:
>>> Not directly, but see REASSIGN OWNED and DROP OWNED.
>> SIMULATE and VERBOSE options would be handy, to see what those commands
>> would actually do.
> Hmph.  I'm surprised to realize that those commands don't produce
> trace output comparable to DROP CASCADE.  If they did, this need
> would be met by the traditional hack of "BEGIN; DROP ...; ROLLBACK".

So... you'll add it to v16????  :D

-- 
Angular momentum makes the world go 'round.



Re: Drop role cascade ?

From
Andreas Kretschmer
Date:
On 18 November 2022 01:14:37 CET, Ron <ronljohnsonjr@gmail.com> wrote:
>On 11/17/22 17:57, Tom Lane wrote:
>> Ron <ronljohnsonjr@gmail.com> writes:
>>> On 11/17/22 17:16, Tom Lane wrote:
>>>> Not directly, but see REASSIGN OWNED and DROP OWNED.
>>> SIMULATE and VERBOSE options would be handy, to see what those commands
>>> would actually do.
>> Hmph.  I'm surprised to realize that those commands don't produce
>> trace output comparable to DROP CASCADE.  If they did, this need
>> would be met by the traditional hack of "BEGIN; DROP ...; ROLLBACK".
>
>So... you'll add it to v16????  :D
>

+1 as feature request




--
Andreas Kretschmer, EDB



Re: Drop role cascade ?

From
Ron
Date:
On 11/17/22 17:07, David Gauthier wrote:
> psql (11.5, server 11.3) on linux
>
> Someone who had privileges in a lot of tables/schemas/DBs left the 
> company.  I want to drop that role but "rop role xxx" won't let me 
> because...  "xxx cannot be dropped because some objects depend on it".
>
> Is there a way to just get rid of this role without revoking xxx in all 
> the individual DB objects he has privs too?  Something like "drop role xxx 
> cascade" ?

Had this idea tonight about how to find what is owned by a specific role.  
Haven't tested it, so the syntax might be a bit wrong, and it might not work:

$ pg_dump --schema-only $DATABASE | grep OWNER | grep $OLDEMPLOYEE


-- 
Angular momentum makes the world go 'round.