Liste der Zuschüsse und Privilegien für eine materialisierte Ansicht in PostgreSQL
Ich brauche, um zu bestimmen, welche Berechtigungen werden gewährt für einige materialisierten sichten in meiner Datenbank.
Die Abfrage für eine Tabelle oder standard-Ansicht ist ziemlich straight-forward:
SELECT grantee, string_agg(privilege_type, ', ') AS privileges
FROM information_schema.table_privileges
WHERE table_schema = 'some_schema' AND table_name = 'some_table'
GROUP by grantee;
Sagte, es scheint nicht zu sein, eine analoge Tabelle für materialisierte Ansichten. Wo kommt PostgreSQL speichern Sie diese Informationen?
- Deine Abfrage funktioniert für normale Ansichten, aber nicht für materialisierte Ansichten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Postgres system-Kataloge sind die grundlegenden vollständige Informationen über die installation und Datenbanken. System-Katalogen sind die zuverlässigste Quelle von Informationen.
Informationen schema als Hilfs-Funktion ist abhängig von den system-Katalogen und wird für Kompatibilität mit anderen RDBMs:
Materialisierte Ansichten sind nicht SQL-standard-Objekte, damit die information schema nicht enthalten Informationen über Sie.
Den system-Katalog
pg_class
enthält alle Informationen über die Vorrechte in der Spalterelacl
.Wenn die Spalte
null
dann der Eigentümer hat alle Privilegien.Einen leeren string als user-name in
acl
stringpublic
.Benötigen Sie eine Funktion, um zu zeigen, Privilegien in lesbar format:
Verwenden:
Folgenden klin die hilfreiche Antwort, ich habe eine Ansicht mit einer Auflistung eine Zusammenfassung aller Privilegien für alle Beziehungen angezeigt, die in
pg_class
(Tabellen, Ansichten, m. views, Indizes, Sequenzen, fremde Tabellen, zusammengesetzten Typen) für alle Rollen: