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!
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
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>;
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
Hatte dieses Problem auch mit RDS.
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 ....
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
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.
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.
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.