У меня есть веб-приложение, основанное на MapServer, которое использует PostGIS в качестве базового расширения базы данных. Теперь я хочу иметь выделенную роль базы данных, которая используется для MapServer, потому что я не хочу обращаться к базе данных через суперпользователь postgres. Эта роль должна иметь только разрешение SELECT для общедоступных таблиц (чего легко достичь) и разрешения EXECUTE для публичных функций PostGIS.Грант EXECUTE для многих функций PostGIS
Возникает несколько вопросов: все ли связанные с PostGIS функции, хранящиеся в общедоступной схеме базы данных, или есть что-то еще для рассмотрения?
Как я могу извлечь всю информацию о функциях - то есть имя функции, число и имена аргументов - из information_schema или pg_catalog базы данных ?! Мне нужна эта информация для GRANT EXECUTE для функции (args) для операторов MapServerUser!
Заранее спасибо!
Я почти забыл: этот запрос показывает только определенные пользователем функции. Если вам нужны внутренние функции, вам нужно удалить часть «AND n.nspname <>« pg_catalog »из предложения WHERE. –
Спасибо, это похоже на то, что я хочу. Поскольку я использую PostgreSQL 8.2.9, у меня нет функций pg_get_fuction_result (oid) и pg_get_function_arguments (oid), так что, возможно, вы знаете эквивалент 8.2. функции? Я искал их, но не мог найти их. Кроме того, столбца proiswindow не существует. –
Запустите это в командной строке: "psql -E". Затем выполните команду psql «\ df». Он распечатает запрос, который он использует, для вывода списка функций (с параметрами и типами возврата). Это должно работать во всех версиях PostgreSQL. –