ich habe eine Frage zu Berechtigungen. Und zwar habe ich eine Datenbank mit mehreren Schemata. Für jedes Schema gibt es eine eigene Benutzerrolle.
Jetzt möchte ich natürlich das eine Benutzerrolle nur auf ihr eigenes Schema zugreifen kann und nicht auf das der anderen.
Auf Datenbankebene kann man ja das CONNECT Privileg entziehen. Geht das auch für Schemata?
Ich habe das bis jetzt so gelöst, dass ich den Benutzerrollen alle Rechte auf Tabellen in anderen Schemata entzogen habe. Das funktioniert auch soweit. Nur so richtig zufrieden bin ich noch nicht. Ich hätte es gerne so, dass wenn ich mit dem pg_Admin mit einer Benutzerrolle auf ein Schema zugreife auf das diese nicht zugreifen darf gleich eine Fehlermeldung bekomme “keine Berechtigung blabla…”. Bei meiner aktuellen Lösung bekomme ich erst eine Fehlermeldung wenn ich eine Tabelle anwähle.
Kann man meinen Wunsch umsetzen?
Jetzt habe ich noch eine Frage, gehört zwar in ein anderes Unterforum, aber wie kritisch ist es denn das public schema zu löschen? Im Prinzip wird es ja nicht genutzt, da jede Benutzerrolle ihr eigenes Schema hat. Muss ich etwas umstellen oder kann ich das ohne Probleme löschen?
Sofern du keinen öffentlichen Namespace z.B. für Funktionen und Daten, die allen zugänglich sein sollen brauchst. Viele Extensions werfen ihre Funktionen halt da rein, weiß nicht was passiert wenn es fehlt.
Danke euch beiden. Eine allerletzte Frage habe ich nun doch noch
Ich habe gerade die Owner der Tabellen geändert. Ich habe es allerdings nicht geschafft den Owner von allen Tabellen mit einmal zu ändern. Ich dachte mit diesem Befehl sollte das klappen:
Stimmt, aber da kann ich ja immer nur eine Tabelle ändern oder? Zumindest steht das so in der Postgres-Doku. Ich habe im Internet schon Scripte gefunden, die die Rechte von allen Tabellen mit einmal ändern.
Ich dachte es gibt ein Postgres-Befehl der das tut.