PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

pg_dump mit Benutzer dont superadmin und großen Objekten

Das Dokument für lo_compat_privileges erklärt die Situation:

Beachten Sie, dass dies pro Datenbank eingestellt werden kann mit:

ALTER DATABASE dbname SET lo_compat_privileges=on;

Wenn lo_compat_privileges ist standardmäßig auf OFF eingestellt , ist der Zugriff nicht auf Superuser beschränkt, sondern kontrolliert. Jedes große Objekt hat einen Besitzer und dieser Besitzer hat volle Rechte. Leseberechtigungen können für jedes große Objekt gleichzeitig erteilt werden (vom Besitzer oder Superuser) mit :

GRANT SELECT ON LARGE OBJECT loid TO rolename;

wobei rolename kann auch PUBLIC sein "jeder" bedeutet, siehe GRANT für die Details.

Andererseits halte ich es nicht für möglich, mit einem einzigen Befehl Berechtigungen auf alle großen Objekte einer Datenbank oder auf noch nicht vorhandene Inhalte im Voraus zu setzen, da ALTER DEFAULT PRIVILEGES hat keine Unterstützung für große Objekte, und wie Sie bemerken, sind Trigger keine Option.

Ein Nicht-Superuser, der SELECT-Berechtigungen für alle großen Objekte einer Datenbank hat, kann diese Datenbank ohne Fehler pg_dumpen.