Vous n'êtes pas identifié(e).
Pages : 1
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?
*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
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?
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.
Très bon à savoir! Merci encore
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).
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
Pages : 1