[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT?] Frage zu postgresql



Hallo,
Am Freitag, 24. Juli 2009 11:57:32 schrieb Peter Jordan:
> Hallo,
>
> ich habe mir heute auf debian lenny postgresql installiert.
>
> Um einen Nutzer für die Webentwicklung zu haben, habe ich folgende
> Schritte unternommen:
>
> $ su postgres -c "createuser -E -P webdev"
> Enter password for new role:
> Enter it again:
> Shall the new role be a superuser? (y/n) n
> Shall the new role be allowed to create databases? (y/n) n
> Shall the new role be allowed to create more new roles? (y/n) n
> $ su postgres -c "psql template1"
>
> > CREATE DATABASE webdev;
> > GRANT ALL PRIVILEGES ON DATABASE webdev TO webdev;
hier ist der Hinweis, wie dein Problem gelöst werden kann, dazu unten 
mehr.
>
> Des Weiteren existiert noch ein Nutzer peter, der Datenbanken
> erstellen darf und eine Datenbank peterdb erstellt hat.
>
> Jetzt kann ich mich aber mit folgendem Befehl in die Datenbank von
> peter als user webdev einloggen:
> peter@host: ~$ psql -h localhost -d peterdb -U webdev
>
> Hier kann webdev jetzt munter Tabellen erstellen oder löschen.
So steht das ja auch oben. Du hast oben dem User webdev nur die Rechte 
innerhalb des DBMS postgresql gegeben bzw. besser gesagt verweigert. Für 
einzelne Datenbanken musst du dies jetzt noch machen.
>
> So war das nicht gedacht. Wo liegt mein Denkfehler? Wie kann ich
> erreichen, das peter nicht in die Datenbank webdev gelangt und webdev
> nur in den Datenbanken arbeiten darf, für die ich ihm die Privilegien
> zugewiesen haben?
In dem du diese dem User explizit zuweist oder entziehst. Dies machst du 
mit GRANT und REVOKE. Alternativ gibt es auch Programme, welche dir dies 
komfortabel ermöglichen. für PHP gibt es phppgadmn. Ein anderes Tool 
wäre pgadmin3, bei diesem kann man dann explizit die Rechte in den 
Eigenschaften der Datenbank angeben (Gruppe oder Benutzer). Es gibt noch 
einige andere Tools, die dir die Administration erleichtern.

Wie unter Linux auch, musst du beide Rechte im Auge haben, die der 
Gruppe und die des Users. Die meisten Datenbanken, welche frisch 
erstellt werden sind der Rolle (hier als Gruppe zu sehen) public zu 
gewiesen. Damit hat jeder User (auch eine Rolle), der auch in der Rolle 
public ist, einige Rechte.

Lies am besten ein wenig in der postgresql Dokumentation über die 
verschiedenen Rechte, die man vergeben kann (CREATE, DELETE, ALTER, 
SELECT, ...) und passe dies deinen Bedürfnissen an. Weiterhin empfiehlt 
es sich, das Kapitel über die Rollen in postgresql zu lesen:

http://www.postgresql.org/docs/
>
> Vielen Dank,
>
> PJ
Gruß

Frank



Reply to: