PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Sécurité » Droits de l'utilisateur postgres sur les dossiers et COPY » 04/03/2011 11:31:56

Merci pour votre réponse.

Je viens de trouver le problème .... C'était tout bête ....

Tout les droits et groupes étaient bien positionnés, mais pour que le serveur postgres prenne en compte son appartenance à un nouveau groupe il fallait le redémarrer ...

Merci encore.

#2 Sécurité » Droits de l'utilisateur postgres sur les dossiers et COPY » 03/03/2011 10:14:32

nGuinet
Réponses : 2

Bonjour,

Ayant une politique de sécurité stricte sur mes serveurs je voulais permettre à postgresql d'utiliser COPY dans un répertoire où seul le propriétaire et son groupe y ont accès.

A mon plus grand étonnement (j'ai testé sur une DEBIAN et une SUSE avec version de postgresql 8.4), lorsque l'utilisateur postgres n'est pas propriétaire du répertoire, le seul moyen de l'y faire accéder est de positionner les droits "other" du répertoire sur read/exec.

Je voulais simplement ajouter le groupe du répertoire à l'utilisateur postgres,mais COPY me renvoie l'erreur Permission non accordée alors que ce groupe a bien les droit en lecture/exécution.

Dans la doc il est noté qu'il suffit que l'utilisateur postgres possède les droits sur le chemin et le fichier pour que COPY fonctionne. Mais apriori ça ne fonctionne pas avec les droits hérité d'un groupe...

Avez déjà entendu parlé de ce problème ? Savez-vous le résoudre ?

Merci par avance.

#3 Re : Général » Imbriquer un update dans un insert ? » 20/09/2009 11:18:55

Merci pour vos réponses.

J'ai utilisé le trigger suivant pour résoudre ce problème :

-- table1 : table pour insertion
-- table2 : table à updater

CREATE OR REPLACE FUNCTION process_add_updated() RETURNS TRIGGER AS $table2$
	DECLARE
	BEGIN
		IF (TG_OP = 'UPDATE') THEN
			INSERT INTO table1 SELECT NEW.*;
			 RETURN NEW;
		END IF;
		RETURN NULL; -- result is ignored since this is an AFTER trigger
	END;
$table2$ LANGUAGE plpgsql;
												
CREATE TRIGGER add_updated
	AFTER UPDATE ON table2
       FOR EACH ROW EXECUTE PROCEDURE process_add_updated();

Pour utiliser ce trigger il faut installer le langage plpgsql. (tuto : http://docs.postgresqlfr.org/8.1/xplang.html)

#4 Général » Imbriquer un update dans un insert ? » 15/09/2009 14:08:36

nGuinet
Réponses : 3

Est-il possible d'imbriquer un update dans un insert grâce à un returning * ?

exemple :

insert into table1 (update table2 set .... where .... returning *)

Cet exemple me renvoi une erreur sur "set".

En faite je cherche un moyen facile  d'insérer des lignes modifiées par une commande update dans une table tierce.

Avez-vous une idée ?

Merci.

#5 Optimisation » Nombre de colonne » 23/12/2008 12:01:25

nGuinet
Réponses : 1

Est ce qu'un grand nombre de colonnes dans une table diminu fortement les performances d'une selection d'une seul colonne ?

cad : Si une table a X lignes et 200 colonnes et que j'en selectionne qu'une seul, les performances seront elles bien inférieures à une selection sur une table à X lignes et 3 colonnes ?

(Ma question pourrait etre : comment fait postgreSQL pour gérer les colonnes ? Par index ou par balayage ?)

Merci!

#7 Re : Général » Utilisation des pg_attribute » 18/12/2008 09:19:00

Merci pour la réponse.

Donc il est impossible en posgreSQL de construire des requêtes dynamiques sur le choix des colonnes et des tables ?

#8 Général » Utilisation des pg_attribute » 15/12/2008 18:17:32

nGuinet
Réponses : 4

Est il possible dans la clause WHERE d'utiliser un des champs de pg_attribute pour identifier une colonne (le nom ou la position)?
Dans la table pg_attribute nous avons des champs attnum et attname qui définissent la position et le nom des colonnes de chaque table. Je voudrais les utiliser pour identifier une colonne dans une requête. Exemple :

select * from matable
where (SELECT attname FROM pg_attribute
  WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'matable') and attnum = 4)
= 'something';



Merci d'avance.

Pied de page des forums

Propulsé par FluxBB