Wie erstellen Sie einen Benutzer mit readonly-Berechtigungen für alle Datenbanken in Postgresql?
Will ich einen user anlegen mit nur select-Privileg für alle Tabellen in allen Datenbanken. Ich dachte, ich könnte eine Liste von Datenbanken und wenden Sie den folgenden Befehl für jede Datenbank:
GRANT select ON DATABASE dbname to user1;
Aber ich bekam die folgende Fehlermeldung:
ERROR: invalid privilege type SELECT for database
Als ich gegoogelt Menschen empfohlen, die grant select
Vorgang für alle Tabellen. Aber neue Tabellen werden immer Hinzugefügt. Das ist also keine akzeptable Lösung für mich. Kennt jemand irgendwelche workarounds?
InformationsquelleAutor der Frage Alptugay | 2011-06-23
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht auf Datenbank-Ebene, nur auf schema-Ebene.
Vorausgesetzt, Sie sind nur mit der
public
schema in jeder Datenbank, können Sie dies tun:InformationsquelleAutor der Antwort a_horse_with_no_name
Müssen Sie tun 2 Dinge: Erstens, erlauben den Zugriff auf vorhandene Objekte; und zweitens, legen Sie die Standard-access für neue Objekte erstellt, von nun an.
Beachten Sie, dass die Gewährung von Zugang zu "TABELLEN" enthält Ansichten, aber keine Sequenzen enthält (wie die auto-Inkrement-Funktion für die "SERIAL" - Spalten), so dass Sie wahrscheinlich wollen, um Zugang zu gewähren, um diejenigen, die als gut.
Den nachfolgend davon ausgegangen, dass Sie alles tun zu wollen, die
public
schema. DieALTER DEFAULT PRIVILEGES
- Anweisung kann sich auf die gesamte Datenbank durch weglassen derIN SCHEMA ...
- Klausel; dieGRANT
einmal ausgeführt werden für jedes schema.PostgreSQL-Handbuch
InformationsquelleAutor der Antwort IMSoP
Merke ich, Sie haben bereits gesagt, dies ist keine akzeptable Antwort, aber es ist die richtige Antwort sowieso.
Angabe der Sicherheit (GRANT und REVOKE) ist Teil des table-design und testen.
Nicht bewegen Tabellen, um die Produktion vor Tabellendefinitionen, Sicherheit, tests und Testdaten sind unter Versionskontrolle.
Gesagt haben, dass, PostgreSQL keine SELECT Berechtigungen auf Datenbanken. Sie gewähren können, nur SCHAFFEN, VERBINDEN, oder TEMP-Berechtigungen auf Datenbanken.
Können Sie grant SELECT auf alle Tabellen in einem bestimmten schema. Ich weiß nicht, wie das wirkt sich auf Tabellen, die erstellt werden, nachdem die Ausführung des GRANT-Anweisung, aber es ist ziemlich einfach zu testen.
PostgreSQL Grant syntax
InformationsquelleAutor der Antwort Mike Sherrill 'Cat Recall'
Für Postgres-Versionen kleiner 9.0:
InformationsquelleAutor der Antwort Vishnu Kumar