Rollen und Berechtigungen
Der Bereich Berechtigungen ist ein Browser für Rollen und Privilegien in PostgreSQL. Er stellt die
Rollen eines Servers im Finder-Stil in nebeneinanderliegenden Spalten dar: Wählen Sie links eine Rolle, und
die Spalten rechts davon zeigen, wovon sie Mitglied ist, wer Mitglied von ihr ist und was sie auf jedem
Datenbankobjekt tatsächlich tun darf — einschließlich allem, was sie nur indirekt besitzt, über geerbte
Rollenmitgliedschaften oder über PUBLIC. Rollen, Mitgliedschaften, Privilegien,
Standardberechtigungen und Eigentümerschaft lassen sich direkt dort anlegen, ändern und entziehen.
Hinweis: Dieser Bereich unterstützt derzeit nur PostgreSQL. Für jede andere Verbindung zeigt er Berechtigungen werden für … noch nicht unterstützt. / Derzeit wird nur PostgreSQL unterstützt.

Den Bereich öffnen
Klicken Sie in der linken Leiste auf das Symbol Berechtigungen (das Personensymbol). Der Bereich arbeitet mit einer Verbindung, die bereits im Bereich Datenbank geöffnet ist: Oben wird dieselbe Leiste der geöffneten Verbindungs-Tabs angezeigt, und der Bereich verwendet den dort ausgewählten Verbindungs-Tab. Ist keine Verbindung geöffnet, zeigt er Keine Verbindung geöffnet — öffnen Sie zuerst eine (siehe Datenbanken verwalten). Die Spalten werden bei jedem Betreten des Bereichs neu aufgebaut, eine frühere Auswahl wird also zurückgesetzt.
Alles, was Sie hier tun, erfordert dieselben Privilegien wie das entsprechende SQL
(CREATEROLE, Superuser oder Eigentümerschaft am Objekt, je nach Aktion) — OmniDB führt die
Anweisungen mit den Zugangsdaten der verwendeten Verbindung aus. Die drei Spalten lassen sich durch Ziehen
des schmalen Griffs an ihrem rechten Rand in der Breite ändern; ein Doppelklick auf einen Griff setzt die
jeweilige Spalte zurück, und die Breiten werden gespeichert.
Spalte 1: Rollen
Die Spalte Rollen listet alle Rollen des Servers auf, einschließlich der eingebauten
pg_*-Rollen, sortiert nach Namen. Rollen, die sich anmelden können (Benutzer), haben ein
Symbol mit einer Person; Rollen, die das nicht können (Gruppen), ein Symbol mit zwei Personen; Superuser
sind mit Superuser gekennzeichnet und Rollen, deren Konto abgelaufen ist, mit abgelaufen. Die erste
Zeile ist immer PUBLIC (Globussymbol) — keine echte Rolle, sondern die Pseudorolle, der jede
Rolle implizit angehört, sodass an PUBLIC vergebene Privilegien auf dieselbe Weise angezeigt
und bearbeitet werden können.
Das Feld über der Liste filtert Rollen nach Namen, die Auswahlliste daneben nach Art: Alle Rollen, Benutzer (Login möglich), Gruppen (ohne Login), Superuser oder Abgelaufen.
Klicken Sie auf eine Rolle, um sie zu fokussieren; die übrigen Spalten zeigen dann diese Rolle. Unter der Liste:
- + öffnet den Dialog Rolle erstellen: Rollenname, Passwort und die Attribut-Kontrollkästchen Kann sich anmelden (standardmäßig aktiviert), Superuser, Kann Datenbanken erstellen, Kann Rollen erstellen, Erbt die Privilegien der Rollen, deren Mitglied sie ist (standardmäßig aktiviert), Kann Replikation starten und Umgeht die Sicherheit auf Zeilenebene (RLS), dazu Verbindungslimit (-1 = unbegrenzt) und Konto läuft ab (leer lassen für unbegrenzte Gültigkeit).
- − löscht die ausgewählte Rolle (für
PUBLICdeaktiviert).

Ein Rechtsklick auf eine Rolle (nicht PUBLIC) bietet:
- Passwort ändern — fragt zweimal nach dem neuen Passwort. Das Passwort wird vor dem Senden in dem Format gehasht, für das der Server selbst konfiguriert ist (SCRAM-SHA-256 oder md5).
- Attribute ändern — dieselben Attributfelder wie bei Rolle erstellen, vorbelegt mit den aktuellen Werten der Rolle. Wird Konto läuft ab geleert, entfällt das Ablaufdatum.
- Rolle umbenennen —
ALTER ROLE … RENAME TO. Grants, Mitgliedschaften und Eigentümerschaft folgen der Rolle; der Dialog weist darauf hin, dass PostgreSQL beim Umbenennen ein als md5 gespeichertes Passwort löscht. - Berechtigungen exportieren / Berechtigungen aller Rollen exportieren — ein kopierbares SQL-Skript,
das die Berechtigungen neu erstellt:
CREATE ROLE(nur Attribute), Mitgliedschaften, direkte Objektprivilegien und Standardberechtigungen, die Anweisungen jeder Datenbank unter einer eigenen Überschrift. Jeder Teil lässt sich abschalten, und das Skript wird neu erzeugt; Als Datei speichern… speichert es (ein nativer Speichern-Dialog in der Desktop-App, ein Download im Browser). Passwörter, die Grants vonPUBLIC, Eigentümerschaft und Rolleneinstellungen werden nicht exportiert. - Rolle klonen — erstellt eine neue Rolle mit den Attributen der Quellrolle und optional
deren direkten Mitgliedschaften und direkten Objektprivilegien in jeder Datenbank (gefunden über
pg_shdepend, sodass Datenbanken, in denen sie nichts hält, nie geöffnet werden). Das Passwort wird nicht kopiert; im Dialog können Sie eines setzen. Standardberechtigungen, eigene Objekte und Einstellungen pro Rolle werden nicht kopiert. - Rolle löschen — besitzt die Rolle noch Objekte oder hält Privilegien, listet der Dialog pro
Datenbank auf, was sie besitzt und hält, und fragt, welche Rolle ihre Objekte übernimmt. OmniDB führt dann
REASSIGN OWNEDundDROP OWNEDin jeder betroffenen Datenbank aus (in dieser Reihenfolge, sodass nichts gelöscht wird), bevorDROP ROLEläuft. Ohne Abhängigkeiten wird nur um Bestätigung gebeten.

Spalte 2: Mitgliedschaften
Die zweite Spalte ist in zwei Hälften geteilt:
- … — Mitglieder (oben): die Rollen, die Mitglied der fokussierten Rolle sind. Ist
PUBLICfokussiert, werden alle Rollen aufgelistet, da sie alle implizit die Privilegien vonPUBLICerhalten. - … — Mitglied von (unten): jede Rolle, der die fokussierte Rolle angehört, direkt oder
über andere Rollen, zu einer einzigen Liste zusammengeführt.
PUBLICsteht immer an erster Stelle.
In beiden Hälften werden direkte Mitgliedschaften in normaler Schrift und indirekte (geerbte) kursiv mit
verblasstem Symbol dargestellt. Eine direkte Mitgliedschaft, die WITH ADMIN OPTION vergeben wurde, ist mit
(Admin-Option) gekennzeichnet; ab PostgreSQL 16 markieren (ohne Vererbung) und (ohne SET)
Mitgliedschaften, denen die Option INHERIT bzw. SET fehlt.
- Das + unter Mitglied von öffnet Mitgliedschaft gewähren: Wählen Sie eine oder mehrere Rollen (Zeilen anklicken, um sie umzuschalten), deren Mitglied die fokussierte Rolle werden soll, optional Mit Admin-Option (Mitgliedschaft weitergeben). Ab PostgreSQL 16 bietet der Dialog außerdem Auswahlmöglichkeiten für INHERIT und SET (Server-Standard / Ja / Nein).
- Das + unter Mitglieder öffnet Mitglied hinzufügen: derselbe Dialog in umgekehrter Richtung — die gewählten Rollen werden Mitglieder der fokussierten Rolle.
- − (oder Rechtsklick → Mitgliedschaft entfernen) entzieht eine Mitgliedschaft nach der Rückfrage Mitgliedschaft in „…“ entziehen?. Nur direkte Mitgliedschaften lassen sich entfernen; eine geerbte muss dort entzogen werden, wo sie tatsächlich vergeben wurde.
- Rechtsklick → Mitgliedschaftsoptionen bearbeiten ändert die Admin-Option einer direkten Mitgliedschaft
und (ab PostgreSQL 16) die Optionen
INHERIT/SETdirekt an Ort und Stelle. - Ein Doppelklick auf eine Zeile oder Rechtsklick → Als aktive Rolle festlegen macht diese Rolle zur fokussierten, genau als hätten Sie sie in der Spalte Rollen angeklickt — der schnellste Weg, einer Vererbungskette nach oben zu folgen.
Spalte 3: Objekte und effektive Privilegien
Die dritte Spalte, … — Objekte, ist ein Baum aller Objekte, auf die die fokussierte Rolle
irgendein Privileg hat — ihre effektiven Privilegien: ihre eigenen direkten Grants plus alles, was
sie über ihre Mitgliedschaften und über PUBLIC erbt. Er beginnt mit zwei Gruppen,
Datenbanken (alle Datenbanken des Servers) und Tablespaces; ein Knoten wird normal
dargestellt, wenn die Rolle dort ein Privileg hat, andernfalls ausgegraut. Das Feld oben
filtert Datenbanken und Tablespaces nach Namen und behält seinen Text beim Wechsel der Rolle.
Beim Aufklappen einer Datenbank werden deren Objekte über eine separate Verbindung zu dieser Datenbank geladen (die aktive Datenbank des Verbindungs-Tabs ändert sich nicht): Schemas und innerhalb jedes Schemas Ordner für Tabellen, Ansichten, Sequenzen, Funktionen, Prozeduren, Materialisierte Ansichten, Typen und Domänen; Foreign Data Wrappers und Fremdserver liegen direkt unter der Datenbank. Aufgeführt werden nur Objekte, auf die die Rolle tatsächlich ein Privileg hat (Systemschemas werden ausgelassen); ein ausgegrautes Schema erscheint nur, weil etwas darin enthalten ist. Jede Datenbank hat außerdem zwei zusätzliche Ordner: Eigene Objekte (n), der auflistet, was die Rolle dort besitzt (bis zu 1000 Einträge), und Standardberechtigungen, siehe unten. Gibt es überhaupt nichts, zeigt die Datenbank Keine Privilegien für Objekte in dieser Datenbank.

Privilegien bearbeiten
Klicken Sie mit der rechten Maustaste auf eine Datenbank, einen Tablespace, ein Schema oder ein Objekt und wählen Sie Privilegien bearbeiten. Der Dialog listet jedes für diese Objektart gültige Privileg als Kontrollkästchen auf:
- Datenbank:
CREATE,CONNECT,TEMPORARY; - Tablespace:
CREATE; Schema:CREATE,USAGE; - Tabelle, Ansicht und materialisierte Ansicht:
SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER; - Sequenz:
USAGE,SELECT,UPDATE; - Funktion und Prozedur:
EXECUTE; - Typ, Domäne, Foreign Data Wrapper und Fremdserver:
USAGE.
Die Kontrollkästchen zeigen, was die Rolle direkt besitzt:
- angekreuzt — direkt an die Rolle vergeben; entfernen Sie das Häkchen, um es per
REVOKEzu entziehen; - nicht angekreuzt — nicht direkt vergeben; setzen Sie das Häkchen, um es per
GRANTzu vergeben. Hat die Rolle das Privileg bereits über eine andere Rolle oderPUBLIC, bleibt das Kästchen nicht angekreuzt und ist mit Geerbt von: … beschriftet — Sie können es trotzdem ankreuzen, um es direkt zu vergeben, sodass es das Entfernen der Mitgliedschaft überlebt, aus der es stammt. Um ein geerbtes Privileg zu entziehen, entziehen Sie es an seiner Quelle (machen Sie die Quellrolle mit Als aktive Rolle festlegen aktiv).

Mit Grant-Option (Privileg weitergeben) gilt für die Privilegien, die Sie in diesem Dialog neu vergeben. Bestätigen Sie mit Speichern.
Um etwas auf einem Objekt zu vergeben, das noch nicht im Baum steht, verwenden Sie das +
(Objektprivileg hinzufügen) unter der Spalte: Wählen Sie den Objekttyp, dann die
Datenbank (für alles außer Datenbanken und Tablespaces; voreingestellt ist die aktuelle Datenbank
der Verbindung), das Schema für Objekte auf Schemaebene, das Objekt selbst (Funktionen
werden mit ihrer Argumentsignatur angezeigt), kreuzen Sie die Privilegien an und optional Mit
Grant-Option (Privileg weitergeben). Für Tabellen, Sequenzen, Funktionen
und Prozeduren lässt sich die Auswahl Umfang von Ausgewähltes Objekt auf Alle …
im Schema umstellen, mit Gewähren oder Entziehen: OmniDB führt dann GRANT/REVOKE
… ON ALL … IN SCHEMA aus, was sich auf die jetzt vorhandenen Objekte auswirkt, nicht auf später erstellte.
Wenn Sie in der ersten Spalte PUBLIC auswählen, können Sie bearbeiten, was
PUBLIC selbst gewährt ist (GRANT … TO PUBLIC / REVOKE … FROM PUBLIC).
Standardberechtigungen
Der Ordner Standardberechtigungen einer Datenbank listet die ALTER DEFAULT PRIVILEGES-Einträge
auf, an denen die fokussierte Rolle beteiligt ist, entweder als Empfänger oder als erstellende Rolle. Sie sind der
Weg, um künftig erstellte Objekte abzudecken. Klicken Sie mit der rechten Maustaste auf den Ordner für Standardberechtigungen
hinzufügen: Wählen Sie die erstellende Rolle (Für Objekte, erstellt von), das Schema (oder alle
Schemas), die Objektart (Tabellen, Sequenzen, Funktionen, Typen, Schemas) und die Privilegien. Klicken Sie mit der rechten Maustaste
auf einen vorhandenen Eintrag für Privilegien bearbeiten (nur die von Ihnen geänderten Häkchen werden vergeben oder entzogen) oder
Standardberechtigungen entfernen.
Eigentümerschaft und wer Zugriff hat
- Eigentümer ändern (Kontextmenü jedes Objekts in der Spalte Objekte) führt
ALTER … OWNER TOfür das Objekt aus. - Wer hat Zugriff ist die umgekehrte Ansicht: Sie listet jede Rolle auf, die etwas
mit dem Objekt tun darf, und warum — Eigentümer, direkter Grant, über eine Mitgliedschaft geerbt oder Superuser —
sowie
PUBLIC, mit Markierungen für die Grant-Option. Die Antworten stammen aus den eigenenhas_*_privilege-Funktionen von PostgreSQL und entsprechen daher dem, was der Server tatsächlich erlaubt. Rollen, die nur das haben, wasPUBLICallen gibt, werden ausgelassen, und Superuser sind in einer eingeklappten Gruppe zusammengefasst; ein Klick auf eine Rolle macht sie zur aktiven Rolle.

Die SQL-Vorschau
Die Dialoge zum Erstellen, Ändern, Umbenennen und Klonen von Rollen, zum Hinzufügen von Mitgliedschaften, zum Vergeben oder Bearbeiten von Privilegien, für Standardberechtigungen und zum Ändern von Eigentümern haben ein einklappbares Feld SQL anzeigen. Es zeigt die genauen Anweisungen, die die aktuellen Formularwerte ausführen würden — erzeugt vom selben Servercode wie der echte Aufruf, nichts wird ausgeführt, Passwörter werden maskiert — und hält sie aktuell, während sich das Formular ändert. SQL kopieren kopiert sie.
Wichtig: Das Bestätigen eines Dialogs führt die Anweisungen sofort auf dem Server aus — es gibt kein Rückgängigmachen. Prüfen Sie sie vorher mit SQL anzeigen. Rolle löschen, Mitgliedschaft entfernen und Standardberechtigungen entfernen fragen außerdem nach einer Bestätigung. Lehnt der Server eine Anweisung ab, wird seine Fehlermeldung angezeigt.