Подтвердить что ты не робот

"ОШИБКА: должен быть членом роли" При создании схемы в PostgreSQL

Я зарегистрировался в учетной записи суперпользователя, и это тот процесс, который я выполняю:

1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test

Роль правильно создана, но я получаю эту ошибку при попытке создать схему:

ERROR:  must be member of role "test"

Спасибо заранее!

4b9b3361

Ответ 1

Я столкнулся с этой проблемой при использовании CREATE DATABASE на Amazon RDS. Я думаю, что это по существу то же самое, что использовать CREATE SCHEMA.

При использовании Amazon RDS пользователь, выдающий CREATE DATABASE, должен быть членом роли, которая будет владельцем базы данных. В моем случае учетная запись суперпользователя, которую я использую, называется root, и я собираюсь создать роль o, которая будет владеть базой данных d:

postgres=> CREATE ROLE o;
CREATE ROLE

postgres=> CREATE DATABASE d OWNER = o;
ERROR:  must be member of role "o"

postgres=> GRANT o TO root;
GRANT ROLE

postgres=> CREATE DATABASE d OWNER = o;
CREATE DATABASE

Ответ 2

Используете ли вы RDS? Потому что я получаю ту же проблему, когда я вхожу в систему как "суперпользователь", который они создают для вас. Способ, которым я смог это исправить, - создать новую групповую роль, включающую моего суперпользователя и пользователя, которому принадлежит схема. Поэтому для вас это означало бы добавление вашего суперпользователя и тестового пользователя в новую группу ролей:

CREATE ROLE users NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT megausers TO testroles;
GRANT test TO testroles;

Теперь вы сможете создать свой schmea

Ответ 3

У этой проблемы была и RDS.

Чтобы решить эту проблему:

Вход как суперпользователь

psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=RDS_SUPERUSER_NAME --password --dbname=postgres

Создайте пользователя

CREATE USER newuser WITH CREATEDB PASSWORD 'password';

Выход

\q

Войти как newuser

psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=newuser --password --dbname=postgres

Создайте свой DB/Schema

CREATE SCHEMA/DATABASE ....

Ответ 4

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

GRANT <role> TO <master_user>;

Ответ 5

Я столкнулся с этой проблемой и с RDS. Я зарегистрировался как пользователь root, создал роль с именем myappuser, а затем попытался создать схему под названием superduper, владельцем которой является myappuser.

Я нашел решение, которое работает. Создайте роль myappuser и убедитесь, что эта роль хотя бы имеет разрешение на создание баз данных (привилегия называется CREATEDB). После создания роли myappuser я зашел в базу данных как myappuser и создал схему superduper, пользователь которой myappuser. Это работало без проблем.

Ответ 6

Разве мы не должны предоставлять членство пользователя admin в роли службы?

create role service_role with password 'some_password';
create database service_db with owner service_role;
ERROR:  must be member of role "service_role"
grant admin_user service_role;
GRANT ROLE
create database service_db with owner service_role;
CREATE DATABASE