Suite

La topologie PostGIS nécessite un administrateur

La topologie PostGIS nécessite un administrateur


J'exécute PostGIS sur un serveur Ubuntu. Je suis en mesure d'ajouter l'extension de topologie via CREATE EXTENSION, mais lorsque j'essaie de l'utiliser autrement qu'en tant qu'administrateur, l'autorisation m'est refusée.

J'ai exécuté GRANT USAGE ON SCHEMA topology TO public, comme suggéré dans cette chaîne. Lorsque j'exécute CreateTopology(), j'obtiens une erreur d'autorisation comme la suivante :

ERREUR : autorisation refusée pour la séquence topology_id_seq

CONTEXTE : fonction PL/pgSQL topology.createtopology (caractère variable, entier, double précision, booléen) ligne 17 à FOR sur les lignes SELECT

Je suppose que cela signifie que je dois singe avec plus d'autorisations sur le schéma de topologie. cependant,

  1. Cela semble un défaut de conception étrange. L'extension Topology ne devrait-elle pas automatiquement prendre en charge les autorisations lors de sa création, tout comme l'extension PostGIS le fait pour la table spatial_ref_sys ?
  2. Je ne sais pas jusqu'où je dois aller dans le trou du lapin des autorisations pour rendre l'extension utilisable.

Quelqu'un d'autre a-t-il rencontré ce problème ?

Voici la sortie de SELECT postgis_full_version() de l'utilisateur normal :

"POSTGIS="2.1.5 r13152" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0, 6 mars 2012" GDAL="GDAL 1.11.2, version 2015/02/10" LIBXML="2.9.1" LIBJSON="INCONNU" TOPOLOGIE RASTER"

L'ensemble de commandes SQL nécessaires pour PostGIS 2.2.1 :

créer l'extension postgis_topology ; accorder l'utilisation de la topologie de schéma à dbuser ; accorder tout sur toutes les tables de la topologie de schéma à dbuser ; accorder l'utilisation, sélectionner toutes les séquences de la topologie de schéma vers dbuser ;

Vous devez être le superutilisateur de la base de données pour exécuter ces requêtes, par exemple dans Ubuntu :

sudo -u postgres psql dbname -c "créer l'extension postgis_topology ;" sudo -u postgres psql dbname -c "accorde l'utilisation de la topologie de schéma à dbuser ;" sudo -u postgres psql dbname -c "accorder tout sur toutes les tables de la topologie de schéma à dbuser ;" sudo -u postgres psql dbname -c "accorder l'utilisation, sélectionner toutes les séquences de la topologie du schéma vers dbuser ;"

Vous devez également accorder des privilèges pour la séquence de la table :

GRANT USAGE, SELECT ON SEQUENCE topology_id_seq TO public ;

Ou si vous souhaitez fournir des privilèges libéraux pour toutes les séquences :

ACCORDER L'UTILISATION, SÉLECTIONNER SUR TOUTES LES SÉQUENCES DU SCHÉMA public À public ;

Voir la vidéo: PostGIS Introduction presented by Paul Ramsey at STL PostGIS Day 2019