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: