J'ai une application Web basée sur MapServer, qui utilise PostGIS comme extension de base de données sous-jacente. Maintenant, je veux avoir un rôle de base de données dédié qui est utilisé pour MapServer, parce que je ne veux pas accéder à la base de données via le superutilisateur postgres. Ce rôle ne doit avoir que l'autorisation SELECT sur les tables publiques (ce qui est facile à réaliser) et les autorisations EXECUTE sur les fonctions PostGIS publiques.Accorder EXECUTER à de nombreuses fonctions PostGIS
Plusieurs questions se posent: Toutes les fonctions pertinentes de PostGIS sont-elles stockées dans le schéma public d'une base de données ou y a-t-il autre chose à considérer?
Comment puis-je extraire toutes les informations sur les fonctions - c'est-à-dire le nom de la fonction, le numéro et les noms des arguments - à partir du schéma d'information ou du catalogue de la base de données? J'ai besoin de cette information pour le GRANT EXECUTE sur la fonction (args) aux instructions MapServerUser!
Merci d'avance !!!
J'ai presque oublié: cette requête affiche uniquement les fonctions définies par l'utilisateur. Si vous avez besoin des fonctions internes, vous devez supprimer la partie "AND n.nspname <> 'pg_catalog'" de la clause WHERE. –
Merci, cela semble proche de ce que je veux. Comme j'utilise PostgreSQL 8.2.9, je n'ai pas les fonctions pg_get_fuction_result (oid) et pg_get_function_arguments (oid), alors peut-être connaissez-vous l'équivalent 8.2. les fonctions? Je les ai cherchés mais je n'ai pas pu les trouver. En outre, la fenêtre proiswindow n'existe pas. –
Exécutez ceci sur la ligne de commande: "psql -E". Ensuite, lancez la commande psql "\ df". Il imprime la requête qu'il utilise pour afficher la liste des fonctions (avec les paramètres et les types de retour). Cela devrait fonctionner dans toutes les versions de PostgreSQL. –