Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2007, 23h14   #1
Membre éclairé
 
Avatar de icer
 
Inscription : janvier 2006
Messages : 332
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 332
Points : 308
Points : 308
Par défaut Droits séquences et vues: spécialiste svp

Bonjour,

Pour vous expliquez mon problème je vais partir d'un exemple :

En plus du schema 'public', j'ai un autre schema 'concept' qui est n'est pas accessible à tout le monde:

Code :
1
2
CREATE SCHEMA concept;
REVOKE ALL ON SCHEMA concept FROM PUBLIC;
Dans ce schema j'ai une table personne:

Code :
1
2
3
4
5
CREATE TABLE concept.personne (
    id_personne SERIAL PRIMARY KEY,
    nom VARCHAR(255),
    prenom VARCHAR(255)
);
(Pour rappel, cette table n'est pas accessible à public).

Dans le shema public, je crée une vue à travers laquelle il est possible de consulter et d'insérer de nouvelle lignes dans la table personne du shema concept, et ça pour tout le monde.


Code :
1
2
3
4
5
6
7
8
CREATE VIEW public.personne AS 
SELECT * FROM concept.personne;
 
CREATE RULE personne_ins AS ON INSERT TO personne
    DO INSTEAD
    INSERT INTO concept.personne (nom, prenom) VALUES (NEW.nom, NEW.prenom);
 
GRANT SELECT, INSERT ON public.personne TO public;
Ensuite je me connecte à la base de données sous un autre utilisateur. Et j'essaye d'insérer une ligne dans la vue public.personne.

Code :
1
2
 
INSERT INTO public.personne (nom, prenom) VALUES ('Michelle', 'DUPUIT');
Normalement, l'insertion aurait dû se passer sans problème, or postgresql m'affiche l'erreur suivante :

Code :
ERROR:  permission denied FOR sequence person_id_person_seq
Pourtant je fais bien l'insertion sur la vue public.personne, et la régle de la vue sur l'INSERTION devrait effectuer l'insertion sur la table concept.personne sans posser de problème de droits.

Est-ce qu'il y a quelque chose qui m'échappe sur l'utilisation des vues, ou est-ce un fonctionnement normal de Postgresql?
icer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 11h03   #2
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Bonjour,

les séquences sont considérées du point de vue des droits d'accès comme des tables à part entière, il faut donc que tu accordes les droits pour UPDATE et SELECT à PUBLIC.
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h47.


 
 
 
 
Partenaires

Hébergement Web