"ОШИБКА: должен быть членом роли" При создании схемы в PostgreSQL
Я зарегистрировался в учетной записи суперпользователя, и это тот процесс, который я выполняю:
1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test
Роль правильно создана, но я получаю эту ошибку при попытке создать схему:
ERROR: must be member of role "test"
Спасибо заранее!
Ответы
Ответ 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