Insert-problem bei zugriff mittels login- und gruppenrole

Hi,

Kleines problem welches die gurus wahrscheinlich fix loesen koennen.

Ich habe fuer meine anwendung eine 'loginrolle' und eine 'grupperolle'
angelegt,
Um fuer diese genau die rechte vergeben zu koennen die benoetigt werden. Ich
denk
das ist soweit ok, es sei denn es gibt gegenvorschlaege.
Bis dato funzt das alles wunderbar, bis auf die tatasache das das nur bei
den selects
so ist. Jetzt will ich mein 1. insert machen und siehe da, das wird
gemeldet:

---> ERROR: permission denied for relation tbl_anlage CONTEXT: SQL statement
"SELECT 1 FROM ONLY "anlagen"."tbl_anlage" x WHERE "id" =3D $1 FOR SHARE OF
x")

Ich habe keine ahnung was er von mir will!
Mein query lautet

---> INSERT INTO sonstiges.tbl_favoriten (anlage_id, benutzer_id) VALUES
(72006001, 17);'


Bei jedem verbindungsaufbau zur DB wird automatisch die ROLE gesetzt ala

---> SET ROLE foobar;

d.h. verbindungsaufbau, ROLE setzen, select..., select..., insert...,
verbindung schliessen.
Die frage ist, was mach ich falsch???


Thx im vorraus




----- AVT Verkehrstechnik ------------------

AVT Verkehrstechnik
NL Nordhausen
Ren=E9 Hankel
Industrieweg 11
99734 Nordhausen, Germany
eMail: rene.hankel [at] avt-verkehrstechnik.de
'''''' tel.: (03631) 468843
(o)(o)
--ooo--(__)--ooo----------------------------


---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster
rene hankel [ Mi, 03 Mai 2006 16:01 ] [ ID #1299017 ]

Re: Insert-problem bei zugriff mittels login- und gruppenrole

am 03.05.2006, um 16:01:27 +0200 mailte rene hankel folgendes:
> das ist soweit ok, es sei denn es gibt gegenvorschlaege.

passt scho so...


> so ist. Jetzt will ich mein 1. insert machen und siehe da, das wird
> gemeldet:
>
> ---> ERROR: permission denied for relation tbl_anlage CONTEXT: SQL stat=
ement
> "SELECT 1 FROM ONLY "anlagen"."tbl_anlage" x WHERE "id" =3D $1 FOR SHAR=
E OF
> x")
>
> Ich habe keine ahnung was er von mir will!
> Mein query lautet
>
> ---> INSERT INTO sonstiges.tbl_favoriten (anlage_id, benutzer_id) VALUE=
S
> (72006001, 17);'


Dein Query paßt irknwie überhaupt nicht zur Fehlermeldung. Sind hier
Trigger im Spiel, oder Rules? Falls ja: man kann beim Erzeugen von SP
auch mit ... SECURITY [DEFINER | INVOKER] da einiges machen...


> Die frage ist, was mach ich falsch???

Mein /dev/glaskugel ist grad zur Politur...
Vielleicht kannst Du in der Zwischenzeit Deine Umstände *etwas* genauer
darlegen?



Andreas
--
Andreas Kretschmer (Kontakt: siehe Header)
Heynitz: 035242/47215, D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
=3D=3D=3D Schollglas Unternehmensgruppe =3D=3D=3D

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings
andreas.kretschmer [ Mi, 03 Mai 2006 16:52 ] [ ID #1299018 ]

Re: Insert-problem bei zugriff mittels login-

Hi,


> ---> ERROR: permission denied for relation tbl_anlage CONTEXT: SQL stat=
ement
> "SELECT 1 FROM ONLY "anlagen"."tbl_anlage" x WHERE "id" =3D $1 FOR SHAR=
E OF
> x")
>
> Ich habe keine ahnung was er von mir will!
> Mein query lautet
>
> ---> INSERT INTO sonstiges.tbl_favoriten (anlage_id, benutzer_id) VALUE=
S
> (72006001, 17);'

Sieht so als ob tbl_anlage von tbl_favoriten über einen Foreign Key
referenziert wird, deine ROLE aber keine Select-Berechtigung für diese
Tabelle hat.

Walter

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend
spam.langweilt [ Mi, 03 Mai 2006 21:55 ] [ ID #1299019 ]

Re: Insert-problem bei zugriff mittels login- und gruppenrole

> -----Ursprüngliche Nachricht-----
> Von: pgsql-de-allgemein-owner [at] postgresql.org
> [mailto:pgsql-de-allgemein-owner [at] postgresql.org] Im Auftrag von A.
> Kretschmer
> Gesendet: Mittwoch, 3. Mai 2006 16:52
> An: pgsql-de-allgemein [at] postgresql.org
> Betreff: Re: [pgsql-de-allgemein] Insert-problem bei zugriff mittels
> login- und gruppenrole
> Wichtigkeit: Hoch
>
> am 03.05.2006, um 16:01:27 +0200 mailte rene hankel folgendes:
> > das ist soweit ok, es sei denn es gibt gegenvorschlaege.
>
> passt scho so...
>
>
> > so ist. Jetzt will ich mein 1. insert machen und siehe da, das wird
> > gemeldet:
> >
> > ---> ERROR: permission denied for relation tbl_anlage CONTEXT: SQL
> > ---> statement
> > "SELECT 1 FROM ONLY "anlagen"."tbl_anlage" x WHERE "id" =3D
> $1 FOR SHARE
> > OF
> > x")
> >
> > Ich habe keine ahnung was er von mir will!
> > Mein query lautet
> >
> > ---> INSERT INTO sonstiges.tbl_favoriten (anlage_id, benutzer_id)
> > ---> VALUES
> > (72006001, 17);'
>
>
> Dein Query paßt irknwie überhaupt nicht zur Fehlermeldung.
> Sind hier Trigger im Spiel, oder Rules? Falls ja: man kann beim
> Erzeugen von SP auch mit ... SECURITY [DEFINER | INVOKER] da einiges
> machen...
>
>
> > Die frage ist, was mach ich falsch???
>
> Mein /dev/glaskugel ist grad zur Politur...
> Vielleicht kannst Du in der Zwischenzeit Deine Umstände
> *etwas* genauer darlegen?
>
>
>
> Andreas
> --
> Andreas Kretschmer (Kontakt: siehe Header)
> Heynitz: 035242/47215, D1: 0160/7141639
> GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
> =3D=3D=3D Schollglas Unternehmensgruppe =3D=3D=3D
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>




Die rechte scheinen alle zu stimmen...denk ich

GRANT SELECT ON TABLE anlagen.tbl_anlage TO grp_dbavt_php;
GRANT SELECT, INSERT, DELETE ON TABLE sonstiges.tbl_favoriten TO
grp_dbavt_php;



Ich hoffe ich kann meine 'Umstände *etwas* genauer darlegen' :D
Auch falls ein select auf tabelle 'anlagen.tbl_anlage' notwendig ist,
die rechte sind vorhanden, genauso wie auf tabelle 'benutzer.tbl_benutzer'!
Und das ist die tabelle fuer das insert:




CREATE TABLE sonstiges.tbl_favoriten
(
-- Vererbt: erstellt_am timestamp DEFAULT ('now'::text)::timestamp(6)
without time zone,
-- Vererbt: erstellt_benutzer_id int4 DEFAULT 0,
-- Vererbt: aenderung_am timestamp,
-- Vererbt: aenderung_benutzer_id int4 DEFAULT 0,
-- Vererbt: geloescht_am timestamp,
-- Vererbt: geloescht_benutzer_id int4 DEFAULT 0,
-- Vererbt: geloescht bool DEFAULT false,
id int8 NOT NULL DEFAULT
nextval(('sonstiges.seq__tbl_favoriten__id'::text)::regclass ), -- primarykey
anlage_id int8 NOT NULL, -- foreignkey -> tbl_anlage.id
benutzer_id int8 NOT NULL, -- foreignkey -> tbl_benutzer.id
CONSTRAINT pkey__tbl_favoriten__id PRIMARY KEY (id),
CONSTRAINT fkey__tbl_favoriten__anlage_id FOREIGN KEY (anlage_id)
REFERENCES anlagen.tbl_anlage (id) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fkey__tbl_favoriten__benutzer_id FOREIGN KEY (benutzer_id)
REFERENCES benutzer.tbl_benutzer (id) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
) INHERITS (virtual.tbl_tupelaenderung)
WITHOUT OIDS;
ALTER TABLE sonstiges.tbl_favoriten OWNER TO usr_dbavt_admin;
GRANT SELECT, INSERT, DELETE ON TABLE sonstiges.tbl_favoriten TO
grp_dbavt_php;
COMMENT ON TABLE sonstiges.tbl_favoriten IS 'tabelle mit den
favoriten-anlagen der benutzer';
COMMENT ON COLUMN sonstiges.tbl_favoriten.id IS 'primarykey';
COMMENT ON COLUMN sonstiges.tbl_favoriten.anlage_id IS 'foreignkey ->
tbl_anlage.id';
COMMENT ON COLUMN sonstiges.tbl_favoriten.benutzer_id IS 'foreignkey ->
tbl_benutzer.id';


CREATE INDEX fki__tbl_favoriten__anlage_id
ON sonstiges.tbl_favoriten
USING btree
(anlage_id);

CREATE INDEX fki__tbl_favoriten__benutzer_id
ON sonstiges.tbl_favoriten
USING btree
(benutzer_id);

CREATE UNIQUE INDEX pki__tbl_favoriten__id
ON sonstiges.tbl_favoriten
USING btree
(id);


CREATE OR REPLACE RULE oninsert_nodouble AS
ON INSERT TO sonstiges.tbl_favoriten
WHERE 0 < (( SELECT count(tbl_favoriten.id) AS count
FROM sonstiges.tbl_favoriten
WHERE tbl_favoriten.anlage_id =3D new.anlage_id AND
tbl_favoriten.benutzer_id =3D new.benutzer_id)) DO INSTEAD NOTHING;
COMMENT ON RULE oninsert_nodouble ON sonstiges.tbl_favoriten IS 'sorge
dafuer das es keine doppelten eintraege von anlagen und usern in den
favoriten gibt';

CREATE TRIGGER set__aenderung_am
BEFORE INSERT OR UPDATE
ON sonstiges.tbl_favoriten
FOR EACH ROW
EXECUTE PROCEDURE virtual.tbl_tupelaenderung__set__aenderung_am();
COMMENT ON TRIGGER set__aenderung_am ON sonstiges.tbl_favoriten IS
'automatisches setzen des timestamp der letzten aenderung';


---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend
rene hankel [ Do, 04 Mai 2006 12:19 ] [ ID #1300712 ]

Re: Insert-problem bei zugriff mittels login- und gruppenrole

rene hankel <rene.hankel [at] avt-verkehrstechnik.de> schrieb:
> Ich hoffe ich kann meine 'Umstände *etwas* genauer darlegen' :D
> Auch falls ein select auf tabelle 'anlagen.tbl_anlage' notwendig ist,
> die rechte sind vorhanden, genauso wie auf tabelle 'benutzer.tbl_benutz=
er'!
> Und das ist die tabelle fuer das insert:
>
>
>
>
> CREATE TABLE sonstiges.tbl_favoriten
> (
> -- Vererbt: erstellt_am timestamp DEFAULT ('now'::text)::timestamp(6)
> without time zone,
> -- Vererbt: erstellt_benutzer_id int4 DEFAULT 0,
> -- Vererbt: aenderung_am timestamp,
> -- Vererbt: aenderung_benutzer_id int4 DEFAULT 0,
> -- Vererbt: geloescht_am timestamp,
> -- Vererbt: geloescht_benutzer_id int4 DEFAULT 0,
> -- Vererbt: geloescht bool DEFAULT false,
> id int8 NOT NULL DEFAULT
> nextval(('sonstiges.seq__tbl_favoriten__id'::text)::regclass ), -- prima=
rykey
> anlage_id int8 NOT NULL, -- foreignkey -> tbl_anlage.id
> benutzer_id int8 NOT NULL, -- foreignkey -> tbl_benutzer.id
> CONSTRAINT pkey__tbl_favoriten__id PRIMARY KEY (id),
> CONSTRAINT fkey__tbl_favoriten__anlage_id FOREIGN KEY (anlage_id)
> REFERENCES anlagen.tbl_anlage (id) MATCH SIMPLE
> ON UPDATE RESTRICT ON DELETE RESTRICT,
> CONSTRAINT fkey__tbl_favoriten__benutzer_id FOREIGN KEY (benutzer_id)
> REFERENCES benutzer.tbl_benutzer (id) MATCH SIMPLE
> ON UPDATE RESTRICT ON DELETE RESTRICT
> ) INHERITS (virtual.tbl_tupelaenderung)

Mit den 'Inherits' - Möglichkeiten habe ich selber wenig bis keine
Erfahrung, hab aber wohl im Hinterkopf, das es da zu sehr unschönen und
nicht wirklich nachvollziehbaren Fehlern kommt. Zumindest drängt sich
der Eindruck auf, wenn man diese und andere Mailinglisten und den
#IRC-Channel lang genug beobachtet...


Naja, vielleicht findet sich jemand, der das Problem sieht und es lösen
kann.


Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknow)
Kaufbach, Saxony, Germany, Europe. N 51.05082=B0, E 13.56889=
=B0

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster
Andreas Kretschmer [ Do, 04 Mai 2006 13:04 ] [ ID #1300713 ]
Datenbanken » gmane.comp.db.postgresql.german » Insert-problem bei zugriff mittels login- und gruppenrole

Vorheriges Thema: pgpool / pg_hba.conf
Nächstes Thema: pgpool