Главный пользователь в RDS postgres не может предоставить привилегии схемы новому пользователю

У меня есть около 5 тестовых баз данных postgres на экземпляре RDS. На сегодняшний день все они были созданы и запущены с использованием Master_user (созданного при создании экземпляра).

Сейчас я пытаюсь создать 5 новых пользователей и предоставить ВСЕ привилегии для каждой из баз данных соответственно. Я попробовал мастер грантов Pgadmin4, но получаю сообщение об отказе в разрешении для любого варианта гранта. Grant ALL не работает, Grant Create, Insert и т. д. тоже не работает. В чем может быть проблема??


person Amogh    schedule 11.10.2017    source источник
comment
является ли master_user членом rds_superuser?..   -  person Vao Tsun    schedule 12.10.2017
comment
Да. В PGadmin4 master_user => свойства => членство => в ролях я вижу rds_superuserи я также могу отметить отметку для Select the checkbox for roles to include WITH ADMIN OPTION. Затем я щелкаю правой кнопкой мыши на test_db1 => мастер предоставления грантов => выберите одну схему (или все схемы) => выберите получателя гранта как 'test_user1` => выберите одну привилегию, например Insert (или выберите All Privs) => Finish => Get Error: Permission denied for schema *****   -  person Amogh    schedule 12.10.2017
comment
Я помню, что вы можете определенно предоставить отношение, если вы являетесь владельцем отношения...   -  person Vao Tsun    schedule 12.10.2017
comment
Я только что попробовал это, пока писал комментарий выше. Я также сделал это через запрос. не удалось предоставить все или предоставить определенную схему или таблицы. С момента создания экземпляра RDS не было других пользователей. Это всего лишь один пользователь и его master_user.   -  person Amogh    schedule 12.10.2017
comment
тогда я думаю, что пришло время написать в поддержку aws?..   -  person Vao Tsun    schedule 12.10.2017
comment
наконец решил сесть и попробовать себя   -  person Vao Tsun    schedule 04.10.2018


Ответы (3)


давайте предположим, что мы подключились к db как rds_superuser, поэтому нам нужно выполнить следующие шаги:

  1. предоставить владельца отношения rds_superuser (чтобы иметь возможность «стать» им)
  2. стать владельцем
  3. грант

Eg.:

rds_superuser@rds_db> grant schema_owner to rds_superuser ;
GRANT ROLE
rds_superuser@rds_db> set role schema_owner;
SET
rds_superuser@rds_db> grant select on all tables in schema schema_name to new_user;
GRANT
rds_superuser@rds_db> reset role;
RESET
person Vao Tsun    schedule 04.10.2018

Я только что сделал резервную копию всех баз данных с помощью --no-owner --no-acl, переименовал базы данных и создал новые с новыми владельцами. восстановил каждую резервную копию с каждым владельцем и добился того, что хотел.

person Amogh    schedule 18.10.2017

Решение состоит в том, чтобы использовать основную базу данных, созданную вместе с экземпляром, в качестве шаблона, чтобы основной пользователь имел к ней полный доступ. Я думаю, что они просто пытаются ограничить людей от создания нескольких БД на одном и том же RDS.

person Gadelkareem    schedule 13.04.2018