User für nur eine Datenbank

Hallo zusammen,

ist es möglich einen/mehrere User einzurichten, die ausschließlich eine bestimmte Datenbank sehen können? Wie geht das?

Viele Grüße

User sind in PostgreSQL globale Objekte, daher überall sichtbar. Du kannst aber den Zugriff auf bestimmte Datenbanken via pg_hba.conf einschränken.

Danke schon mal für das Feedback.

Aber geht das auch für User?

Also kann ich einstellen, dass user a nur auf db aa darf?
Ich sehe immer nur die Einschränkung IP daruf nur auf db aa

das dritte Feld ist der User.

Sehen können die Benutzer immer alle Datenbanken, das lässt sich leider nicht unterbinden.

Aber das Recht sich darauf zu verbinden kann entsprechend kontrolliert werden.

Über pg_hba.conf ist eine Methode, aber ich finde es etwas einfacher das alles über SQL zu administrieren. Dann kann man das auch über eine remote Verbindung ohne auf dem Server Dateien editieren zu müssen.

Deswegen erlaube ich über pg_hba.conf allen Benutzern die Verbindung zu allen Datenbanken.

Das eigentlich Recht zum Verbinden zu einer bestimmten Datenbank kontrolliere ich dann über:

grant connect on database xyz to arthur_dent;

Allerdings benötigt das eine kleine Vorarbeit: nach dem Anlegen einer neuen Datenbank hat die “public” Rolle (und damit jeder Benutzer) das Recht sich zu verbinden.

Deswegen lasse ich nach dem Anlegen einer Datenbank immer ein

revoke connect on database xyz from public; 

laufen um sicher zu stellen, dass nur die Benutzer die ein explizites GRANT haben, sich darauf verbinden dürfen.

Wenn Du viele Benutzer hast, dann ist es einfacher diese Rechte an eine Rolle zu binden, und dem konkreten Benutzer dann die entsprechenden Rollen zuzuweisen.

1 „Gefällt mir“

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.