REVOKE funktioniert nicht

Hallo zusammen,

ich habe einen user erstellt, der nur Rechte für eine bestimmte Datenbank haben soll. Alle anderen Datenbanken soll er nicht anrühren dürfen.

Ich habe deshalb ein REVOKE für die Datenbanken ausgeführt, die er nicht bearbeiten darf:

REVOKE ALL PRIVILEGES ON DATABASE geheime_datenbank FROM myuser;

Wenn ich mich aber jetzt mit meinem user “myuser” im Pgadmin III einlogge, kann ich nach wie vor auch Daten der DB geheime_datenbank abfragen.

Hab ich da etwas falsch gemacht oder vergessen?

Vielen Dank, Hannes

Er ‘sieht’ die DB, mehr aber auch nicht, oder?

Was hast Du für deine ‘geheime_datenbank’ für Einträge in der pg_hba.conf?

Generell: in solchen Umgebungen gibt es einige Fallstricke. Welche, und einige Lösungen dafür, hat mein neuer Kollege Thomas Jacob mal hier beschrieben:

Shared Database Hosting - PostgreSQL Wiki

Andreas

Hallo Andreas,

leider ‘sieht’ er die DB nicht nur, sondern kann auch SELECTs, usw. darauf ausführen (entschuldige, dass ich mich so ungenau ausgedrückt habe).

In der pg_hba.conf ist zu der DB ‘geheime_datenbank’ nichts geregelt. Wobei diese Datei ja sowieso eher dafür ist, zu bestimmen ob bestimmte Hosts/Netzwerkbereiche zu Datenbanken Zugriff haben, oder? In menem Fall möchte ich ja einem bestimmten user die Rechte entziehen, egal von welchem Host aus er sich einloggt.

Danke für den Link - sieht sehr interessant aus!!

Jein. Dort wird auch geregelt, welche Benutzer Zugang zu bestimmten Datenbanken haben. Du kannst auch ROLEs definieren und in der pg_hba.conf angeben.
Willst Du Rechte auf Objekten ändern, so wirst Du dies für jedes Objekt selbst machen müssen. Du kannst mal Google nach grantall befragen.

Andreas