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

Re: [OT?] Frage zu postgresql



Am Freitag, 24. Juli 2009 15:10:00 schrieb Peter Jordan:
> Frank Störzer, Fri Jul 24 2009 13:19:39 GMT+0200 (CEST) :
> > Hallo,
> >
> > Am Freitag, 24. Juli 2009 11:57:32 schrieb Peter Jordan:
> >> 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.
>
> Naja ich dachte mit
> GRANT ALL PRIVILEGES ON DATABASE webdev TO webdev;
>
> würde ich dem Nutzer webdev alle Rechte für die Datenbank webdev
> geben.
hast du ja auch. Aber eben nur explizit für die Datenbank webdev.
>
> >> 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.
>
> Das verstehe ich nicht.
Beim Anlegen werden nur die allgemeinen Rollen und Rechte festgelegt. 
Diese gelten für das DBMS, nicht für die DB.
>
>
> > Für einzelne Datenbanken musst du dies jetzt noch machen.
>
> Ich dache mit dem GRANT hätte ich das für die einzelne Datenbank
> webdev gemacht.
Ja, aber nur für diese DB. Für alle anderen gilt der Standard. 
>
> >> 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.
>
> Ich mag Programme nicht, wenn ich nicht verstehe was dahinter steckt.
> Wenn ich alles selbst eingerichtet habe und verstehe, dann kann ich
> so ein tool nutzen.
Sehr löblich, allerdings ist gerade pgadmin3 dazu gedacht, den Admin des 
DBMS zu unterstützen ohne ihm die Arbeit abzunehmen, Hier kannst du mit 
SQL-Befehlen das DBMS und auch einzelne DBs beeinflussen. Dabei hast du 
eine gute Übersicht über dein DBMS. Du kannst das Tool auch nur zum 
Betrachten verwenden, den Rest weiterhin auf der Konsole erledigen.
>
> > 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.
>
> Wie zeige ich den die Rechte an?
SELECT * FROM pg_roles;

zeigt dir alles an, musste ich aber auch erst im Handbuch schauen und 
leicht anpassen ;).
(http://www.postgresql.org/docs/8.3/interactive/database-roles.html)

> Wie finde ich heraus, wer in welcher Rolle ist?
SELECT * FROM pg_user;
bzw.
SELECT * FROM pg_group;

könnten hier helfen, ich selber verwende eigentlich hier auf dem Rechner 
lokal keine Gruppen und hatte bisher noch nicht das Bedürfnis, dies 
abzufragen. Das meiste wird eh über Views geregelt oder mit expliziten 
SQL-Anfragen. Zumindest bei mir ;) Der erste Befehl zeigt aber nur eine 
reduzierte Ansicht des obigen Befehls an, der zweite hat bei mir keine 
Ausgabe, welche von Interesse wäre.

Ach ja, public ist ein Schema, keine Gruppe in dem Sinn. Ich hatte das 
irgendwie noch anders im Hinterkopf, allerdings kann man das Schema 
public mit den Rechten für die Welt gleich setzen.
>
> > 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/
>
> Das werde ich tun.
Lese dich erst mal ein, dann kannst du ja noch fragen stellen, zu etwas, 
was du nicht ganz verstanden hast. Vieles steht schon im Handbuch, aber 
passe auf, dass du das Richtige zu deiner Version verwendest.
>
>
> PJ
Gruß

Frank


Reply to: