Vous n'êtes pas identifié(e).
Pages : 1
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?
Hors ligne
Quel utilisateur utilisez-vous pour ajouter les objets dans cette nouvelle base ? Essayez de donner plutôt les commandes que vous exécutez, ça permettra d'y voir plus clair.
Guillaume.
Hors ligne
*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
Hors ligne
Le problème vient directement de la base template_postgis. Dans cette base, les deux tables dont vous parlez doivent déjà avoir comme propriétaire l'utilisateur postgres. Connectez-vous sur cette base, et changez le propriétaire. La prochaine création devrait bien se passer.
Pour infos, CREATE DATABASE ne fait que copier l'autre base. Il n'y a aucun changement de réalisé. Par exemple, le propriétaire et les droits restent identiques à ceux des objets copiés de la base template.
Guillaume.
Hors ligne
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?
Dernière modification par NicoFromIGN (13/04/2012 14:29:00)
Hors ligne
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?
Oui, tout à fait. Mais au moins, vous pourrez faire un REASSIGN après la création de la base.
Guillaume.
Hors ligne
Pages : 1