Amazon RDS Postgres - ›Разрешить pg_catalog

Мне нужно предоставить основному пользователю (MasterUsername) разрешение на доступ к pg_catalog.

GRANT USAGE ON SCHEMA pg_catalog TO <master-user>;

При запуске я получаю следующее предупреждение: ВНИМАНИЕ: для "pg_catalog" не было предоставлено никаких привилегий.

По сути, у меня есть сценарий автоматизации, в котором я создаю базу данных, задаю путь поиска и:

SET search_path = <my-schema>, pg_catalog;
CREATE TYPE <type> AS (
id bigint,
name character varying);

Я получаю ошибку ниже

Caused by: org.postgresql.util.PSQLException: ERROR: permission denied for schema pg_catalog

По сути, это не позволяет мне создавать тип, поскольку таблица pg_type существует в pg_catalog. Как создать шрифт?

Я не знаю, поможет ли предоставление прав ИСПОЛЬЗОВАНИЯ? Если есть другой способ обойти это, дайте мне знать.


person Pavanraotk    schedule 14.07.2017    source источник


Ответы (2)


предоставление прав использования позволит вам получить доступ только к объектам схемы, для создания новых объектов потребуются привилегии create для этой схемы.

person Lohit Gupta    schedule 14.07.2017
comment
Да, я знаю, я просто хочу добавить pg_catalog в путь поиска. Проблема в том, что я получаю эту ошибку, когда пытаюсь предоставить роль. Могу ли я предоставить такой доступ в AWS RDS? - person Pavanraotk; 15.07.2017
comment
Вы пытаетесь создать объект внутри схемы pg_catalog, или вам просто нужно получить доступ к некоторому объекту pg_catalog, чтобы создать объект в другом месте. - person Lohit Gupta; 18.07.2017
comment
Мне нужно создать типы в pg_type и, конечно же, изменить разрешение функций postgis для моего пользователя базы данных. - person Pavanraotk; 18.07.2017
comment
не можете ли вы использовать какое-либо другое имя, кроме pg_type, иначе переименуйте существующий pg_type и создайте на его месте свой собственный pg_type. - person Lohit Gupta; 19.07.2017
comment
Я не думаю, что мы можем создавать собственные типы вне pg_type. Кроме того, pg_type существует в pg_catalog, я не могу переименовать, так как у меня нет права - person Pavanraotk; 19.07.2017
comment
вы можете создать собственный тип в своей схеме и использовать его. Хотя не рекомендуется изменять схемы каталога по умолчанию в postgres, если вы не знаете, что делаете и каковы его последствия, если вы хотите создать / изменить что-либо в pg_catalog, вам нужно будет запустить GRANT ALL ON SCHEMA pg_catalog TO <master-user>; - person Lohit Gupta; 19.07.2017
comment
Я получаю предупреждение, что никакие привилегии не были предоставлены, так как это Amazon RDS, они не позволяют нам получить это право - person Pavanraotk; 19.07.2017

Я обошел это очень просто: я создал роль postgres, используя CREATE ROLE postgres, я назначил ее своему пользователю.

Добавлен в общий путь поиска и в базу данных пользователем SET search_path=public,<database>

Назначение этого моему пользователю фактически дало мне все права, необходимые для создания пользовательского pg_type, использования схемы pg_catalog в общедоступной схеме. Как это работало? Не знаю, может ребята из postgres могут на это ответить? Или ребята из AWS RDS могут ответить на этот вопрос.

Во-вторых, я столкнулся с другой проблемой при использовании pg_functions и функций расширения Postgis, даже они были решены путем добавления роли postgres к пользователю, которому нужно было получить доступ к функции.

Я все еще думаю, что это обходной путь, а не прямое исправление, или, возможно, исправление, но по этому поводу должна быть какая-то документация (которую я не нашел).

person Pavanraotk    schedule 23.07.2017