it-swarm.com.de

"ERROR: Muss Mitglied der Rolle sein" Beim Erstellen eines Schemas in PostgreSQL

Ich bin mit einem Superuser-Konto angemeldet und dies ist der Vorgang, den ich gerade mache:

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

Die Rolle wurde korrekt erstellt. Beim Versuch, das Schema zu erstellen, wird jedoch folgende Fehlermeldung angezeigt:

ERROR:  must be member of role "test"

Danke im Voraus!

51
Ultranuke

Bei der Verwendung von CREATE DATABASE bei Amazon RDS ist dieses Problem aufgetreten. Ich denke, es ist im Wesentlichen dasselbe wie CREATE SCHEMA.

Bei Verwendung von Amazon RDS muss der Benutzer, der den CREATE DATABASE ausstellt, Mitglied der Rolle sein, die der Eigentümer der Datenbank ist. In meinem Fall heißt das Superuser-Konto, das ich verwende, root, und ich werde eine Rolle o erstellen, die eine Datenbank d besitzt:

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
70
David Jones

Ich bin auf das gleiche Problem gestoßen. Es beklagt sich, dass der aktuelle (Master) Benutzer, mit dem Sie angemeldet sind, kein Mitglied der Benutzergruppe ist, für die Sie das Schema erstellen möchten. Sie sollten Ihrem Hauptbenutzer die Berechtigung erteilen, damit Sie die SCHEMA fehlerfrei erstellen können:

GRANT <role> TO <master_user>;
22
James Ching

Verwenden Sie RDS? Weil ich dasselbe Problem bekomme, wenn ich mich als "Superuser" anmelde, den sie für Sie erstellen. Ich konnte das Problem beheben, indem ich eine neue Gruppenrolle erstellte, die meinen Superuser und den Benutzer enthielt, dem das Schema gehörte. Für Sie bedeutet dies, dass Sie Ihren Superuser und Testbenutzer einer neuen Rollengruppe hinzufügen:

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

Jetzt sollten Sie in der Lage sein, Ihre schmea zu erstellen

21
bionicseraph

Hatte dieses Problem auch mit RDS.

Um es zu lösen:

Melden Sie sich als Superuser an

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

Erstellen Sie den Benutzer

CREATE USER newuser WITH CREATEDB PASSWORD 'password';

Ausloggen

\q

Login als newuser

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

Erstellen Sie Ihre Datenbank/Ihr Schema

CREATE SCHEMA/DATABASE ....
15
Rafael Oliveira

Müssen wir dem Admin-Benutzer nur die Mitgliedschaft für die Servicerolle erteilen?

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
7
jorfus

Dieses Problem ist auch bei RDS aufgetreten. Ich habe mich als Benutzer root angemeldet, eine Rolle mit dem Namen myappuser erstellt und dann versucht, ein Schema mit dem Namen superduper zu erstellen, dessen Besitzer myappuser ist.

Ich habe eine Lösung gefunden, die funktioniert. Erstellen Sie die Rolle myappuser, und stellen Sie sicher, dass diese Rolle mindestens die Berechtigung zum Erstellen von Datenbanken besitzt (das Recht heißt CREATEDB). Nach dem Erstellen der myappuser-Rolle habe ich mich als myappuser bei der Datenbank angemeldet und das superduper-Schema erstellt, dessen Benutzer myappuser ist. Das hat ohne Probleme funktioniert.

5

Ich bin gerade mit Amazon RDS darauf gestoßen.

Viele Antworten sind bereits richtig, aber Sie können auch einfach die Rolle ändern.

Hier war meine Umsetzung

psql -h ${PGHOST} -p ${PGPORT:-5432} -U ${PGUSER:-postgres} -c "ALTER USER renderer WITH CREATEDB PASSWORD '$RENDERPASSWORD'"

Beim Ändern des Kennworts füge ich der Rolle außerdem die Berechtigung CREATEDB hinzu.

0
sprut

Ich stand vor demselben Problem. Um dieses Problem zu beheben, habe ich mich mit der neu erstellten Rolle angemeldet und die Datenbank erstellt . Grant funktioniert in RDS Postgres irgendwie nicht.

0
Sid