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

#1 Re : Général » Utilisation de template_postgis et droits d'accès » 13/04/2012 14:10:50

Merci.
Effectivement template_postgis a bien pour propriétaire postgres, mais n'est-ce pas logique puisque cette base découle de l'installation initiale de PostGIS? (au même titre que les bases 'postgres', 'postgis', 'template0' et 'template1').
Si je change le propriétaire de 'template_postgis' (ou des 2 tables spatiales) par 'eleve', le problème ne sera que reporté à la prochaine création de base avec un autre utilisateur, non?

#2 Re : Général » Utilisation de template_postgis et droits d'accès » 13/04/2012 13:29:57

*Je travaille avec pgAdmin III. Je réalise mes tests sur une instance de PostgreSQL 8.3 installé en local (localhost).
*J'ai tout d'abord créé un nouvel utilisateur 'eleve' à partir d'une connexion avec le superutilisateur 'postgres'. Je lui ai accordé le droit CREATEDB (ainsi d'ailleurs que CREATEROLE en vue d'autres tests):
CREATE ROLE eleve LOGIN
  ENCRYPTED PASSWORD 'md5dcb3b02a08cd9eb809fba37d0c9b010b'
  NOSUPERUSER NOINHERIT CREATEDB CREATEROLE;
COMMENT ON ROLE eleve IS 'mdp=toto';
*J'ai ensuite créé une nouvelle connexion au serveur (localhost sur port 5432), mais cette fois-ci avec mon nouvel utilisateur 'eleve'. Je travaille désormais sur cette connexion.
*Je crée alors ma nouvelle base en utilisant le template_postgis et en précisant mon utilisateur 'eleve' comme propriétaire:
CREATE DATABASE "Maspatialdatabase"
  WITH ENCODING='LATIN9'
       OWNER=eleve
       TEMPLATE=template_postgis;
*Ma nouvelle base est bien créée. Si je cherche à visualiser mes deux tables spatiales dans pgAdmin, celui-ci me prévient 'ERROR: permission denied for relation geometry_columns' par exemple. Effectivement, c'est 'postgres' qui en est le propriétaire. Cela se confirme si je cherche à ajouter des enregistrements dans la table via SELECT AddGeometryColumn(...).
*NB : j'ai le même résultat si je passe en ligne de commande :
createdb -O eleve T template_postgis -U eleve my_spatial_database

#3 Général » Utilisation de template_postgis et droits d'accès » 13/04/2012 10:57:37

NicoFromIGN
Réponses : 5

Bonjour.

Je m'interroge sur l'aspect suivant :

Je crée un base spatiale en utilisant le template_postgis qui a été créé à l'installation de PostGIS.
Je précise bien un propriétaire autre que l'utilisateur postgres (cet autre utilisateur a bien le droit CREATEDB, mais il n'est pas Superutilisateur).
Résultat : les 2 tables geometry_columns et spatial_ref_sys (ainsi que toutes les fonctions) issues du template conservent postgres comme propriétaire.

Problème : mon utilisateur propriétaire de la base ne peut pas accéder aux infos des 2 tables de sa base, à moins que postgres  en modifie les droits. Cela me parait illogique. Y a-t-il un remède à cela?

Faut-il forcément être Superutilisateur pour créer des bases de données spatiales et éventuellement en modifier les droits pour accès d'un utilisateur de plus bas niveau?

#4 Re : Général » CHECK : Correspondance de motif d'une chaîne contenant un underscore » 13/04/2012 10:04:56

Merci. Ma solution finale pour info  :
*
add check (nom SIMILAR TO '(0|1)[0-9](1|3|5|7|9)$_(0|1)[0-9](0|2|4|6|8)%' ESCAPE'$');
*
Je vérifie que mon attribut 'nom' possède un formalisme tel que :
- (0|1) : le premier caractère peut être '0' ou '1'
- [0-9] : le second caractère est un chiffre
- (1|3|5|7|9) : le troisième caractère est un chiffre impaire
- $_ : le quatrième caractère est obligatoirement un underscore. C'est ici le symbole '$' que j'ai choisi comme caractère d'échappement, chose que j'indique au traitement grâce à l'ajout de ESCAPE'$' à la suite du SIMILAR TO '...'
- (0|1) : le cinquième caractère peut être '0' ou '1'
- [0-9] : le sixième caractère est un chiffre
- (0|2|4|6|8) : le septième est un chiffre paire
- % : on peut ensuite trouver tout ce qu'on veut tant que ce qu'il y a avant convient.

#6 Re : Général » CHECK : Correspondance de motif d'une chaîne contenant un underscore » 05/04/2012 15:14:26

Merci beaucoup j'étais passé 3 fois devant l'info sans la lire.
Je pars m'acheter des lunettes. A+

J'utiliserai donc \_ (antislash avant l'underscore).

#7 Général » CHECK : Correspondance de motif d'une chaîne contenant un underscore » 05/04/2012 15:03:12

NicoFromIGN
Réponses : 6

Bonjour,

Je souhaiterais mettre une contrainte sur un attribut de type character varying pour qu'il corresponde à mon motif.

Typiquement ma chaîne devra ressembler à 'toto_titi' où la présence de l'underscore est obligatoire.

Problème : l'underscore est utilisé dans Postgresql pour remplacer n'importe quel caractère lors de la définition du motif!

Connaitriez-vous une solution pour palier ce problème? (je n'ai pas l'impression que l'on puisse remplacer l'underscore par son code ascii dans le motif).

Merci et bonne journée

Pied de page des forums

Propulsé par FluxBB