Rechteverwaltung für Datenbanken

Hi, ich habe folgendes Problem:
Ich habe auf meinem Server verschiedene Benutzer angelegt, die alle eigene Datenbanken anlegen können sollen. Ziel ist, dass jeder Benutzer eine beliebige Anzahl an Datenbanken hat, die aber nur er betrachten kann. Datenbanken von anderen Benutzern soll er nicht sehen können.

Ich habe den Benutzern alle Rechte für Datenbankobjekte entzogen (REVOKE ALL PRIVILEGES), sprich: Er kann nur auf seinen Datenbanken SELECT, INSERT usw. durchführen. Klappt auch. Nur leider kann er immer noch alle anderen vorhandenen Datenbanken betrachten, und auch deren Struktur sehen. Inhalte von Tabellen natürlich nicht.

Wie kommt das und vor allem, wie kann ich das verhindern?

Grüße, Zumm

Du kannst per pg_hba.conf festlegen, wer überhaupt auf welche Datenbank connecten darf.

Wenn jemand nicht auf die DB darf, kann er auch keine Struktur einsehen.

Kennt sich da jemand aus? Ich will, dass ein user nur auf eine Datenbank connecten darf, die er besitzt. Ausnahmen kann ich ja noch deklarieren. Ich bin nur etwas hilflos, was die Struktur angeht. Die pgSQL-Manualseiten zu dem Thema (http://www.postgresql.org/docs/8.1/interactive/client-authentication.html) helfen mir da nicht wirklich weiter.

Also die Datei pg_hba.conf ist sehr gut dokumentiert und mit Beispielen unterlegt. Was du suchst, ist wahrscheinlich die ‘ident’ Methode …

Gut, ich kann jetzt Usern den Zugriff auf Datenbanken verweigern. Benutze ich aber pgPhpAdmin, so kann ich immer noch alle Datenbanken sehen - wenn auch nicht auf sie zugreifen. Ich finde das sehr unschön, wie kann ich das vermeiden?

Wohl gar nicht, die Liste der Datenbanken ist für alle einsehbar.

Das ist ja doof. Ich muss mich schon daran gewöhnen, dass ich die Datenbankrechte in eine Datei schreiben muss - das verstehe ich nicht, da eine Datenbank doch so viel einfacher ist. Aber dass auch noch jeder x-beliebige alle Datenbanken sehen kann, die es auf dem System gibt… das macht in meinen Augen keinen Sinn. Haben sich da schonmal Leute Gedanken zu gemacht? Gibt es da einen “Hack”?

Also für das erste, die Sachen in einer Datei, gibt es derzeit Überlegungen, das auch innerhalb der DB abzulegen.

Für das zweite wäre mir nichts bekannt.