PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

pg_dump con l'utente non superamministratore e oggetti di grandi dimensioni

Il documento per lo_compat_privileges spiega la situazione:

Nota che questo può essere impostato per database con:

ALTER DATABASE dbname SET lo_compat_privileges=on;

Quando lo_compat_privileges è impostato sul valore predefinito OFF , l'accesso non è limitato ai superutenti, ma controllato. Ogni oggetto di grandi dimensioni ha un proprietario e quel proprietario ha pieni diritti. Le autorizzazioni di lettura possono essere fornite per ogni oggetto di grandi dimensioni alla volta (dal proprietario o dal superutente) con :

GRANT SELECT ON LARGE OBJECT loid TO rolename;

dove rolename può anche essere PUBLIC per significare "tutti", vedere GRANT per i dettagli.

D'altra parte, non credo sia possibile impostare i permessi su tutti gli oggetti di grandi dimensioni di un database con un solo comando, o in anticipo su contenuti non ancora esistenti, poiché ALTER DEFAULT PRIVILEGES non supporta oggetti di grandi dimensioni e, come noti, i trigger non sono un'opzione.

Un non superutente che ha i permessi SELECT su tutti gli oggetti di grandi dimensioni di un database può pg_dump questo database senza errori.