Sto provando a effettuare l'efficace drop role
da un'istanza Postgres e si stanno verificando alcuni problemi. Sto cercando un po 'di SQL a drop role
in modo che possa smettere di leggere i messaggi di errore e non devo farlo manualmente.Rilascio del ruolo e del database postgres dopo numerose concessioni
Nella configurazione sto lavorando in, ogni ruoli ottiene il proprio database con lo stesso nome:
CREATE ROLE alpha_user;
CREATE DATABASE alpha_user;
ALTER DATABASE alpha_user OWNER TO alpha_user;
utenti concedono spesso l'accesso a schemi nel loro database ad altri utenti:
-- alpha_user logs in to the alpha_user database
GRANT USAGE ON SCHEMA myschema TO beta_user;
Quando tento di goccia beta_user
, questo avviene:
-- log in as superuser
DROP ROLE beta_user;
-- ERROR: role "beta_user" cannot be dropped because some objects depend on it
-- DETAIL: N objects in database alpha_user
posso collegare il database alpha_user
, e rilasciare OWNED BY
, ma questo è inefficiente:
-- log in as superuser
\c alpha_user;
DROP OWNED BY beta_user CASCADE;
DROP beta_user;
-- success
utenti possono concedere l'accesso a qualsiasi numero di database, e ci sono molti utenti. Esiste una dichiarazione (o una serie di dichiarazioni) che un superutente può eseguire su DROP OWNED BY
per un utente su tutti i database a cui è stato concesso l'accesso?
Qual è la tua versione di PostgreSQL e qual è il tuo sistema operativo? –
Postgres 9.4 e Ubuntu 14.04. Perché dovrebbe essere importante il sistema operativo? – alacarter
È possibile utilizzare l'aiuto degli strumenti da riga di comando forniti da linux. –