Ich bin mit einem Superuser-Konto angemeldet und dies ist der Prozess, den ich mache:
1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test
Die Rolle wurde korrekt erstellt, aber beim Versuch, das Schema zu erstellen, wird folgende Fehlermeldung angezeigt:
ERROR: must be member of role "test"
Danke im Voraus!
postgresql
roles
Ultranuke
quelle
quelle
Antworten:
Bei der Verwendung
CREATE DATABASE
mit Amazon RDS ist dieses Problem aufgetreten. Ich denke, es ist im Wesentlichen das gleiche wie mitCREATE SCHEMA
.Bei Verwendung von Amazon RDS muss der Benutzer, der das
CREATE DATABASE
ausgibt, Mitglied der Rolle sein, die der Eigentümer der Datenbank sein wird. In meinem Fall wird das von mir verwendete Superuser-Konto aufgerufenroot
und ich werde eine Rolle erstellen,o
die eine Datenbank besitzen wirdd
: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
quelle
GRANT o TO postgres;
vor dem Erstellen der Datenbank ausgeführt habe.Ich bin auf dasselbe Problem gestoßen. Es beschwert sich darüber, dass der aktuelle (Haupt-) Benutzer, mit dem Sie angemeldet sind, kein Mitglied der Benutzergruppe ist, für die Sie das Schema erstellen möchten. Sie sollten Ihrem Hauptbenutzer den Rollenzugriff gewähren, damit Sie das SCHEMA ohne Fehler erstellen können:
GRANT <role> TO <master_user>;
quelle
Verwenden Sie RDS? Weil ich das gleiche Problem bekomme, wenn ich mich als "Superuser" anmelde, den sie für Sie erstellen. Die Art und Weise, wie ich dies beheben konnte, bestand darin, eine neue Gruppenrolle zu erstellen, die meinen Superuser und den Benutzer, dem das Schema gehörte, umfasste. Für Sie bedeutet dies, dass Sie Ihren Superuser und Testbenutzer zu 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
quelle
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
Anmelden als
newuser
psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=newuser --password --dbname=postgres
Erstellen Sie Ihre DB / Ihr Schema
CREATE SCHEMA/DATABASE ....
quelle
Müssen wir der Administratorrolle nicht nur die Administratormitgliedschaft zuweisen?
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
quelle
GRANT service_role TO admin_user;
Ich habe dieses Problem auch bei RDS festgestellt. Ich habe mich als
root
Benutzer angemeldet , eine Rolle mit dem Namen erstelltmyappuser
und dann versucht, ein Schema mit dem Namen "superduper
Eigentümer" zu erstellenmyappuser
.Ich habe eine Lösung gefunden, die funktioniert. Erstellen Sie die
myappuser
Rolle, und stellen Sie sicher, dass diese Rolle mindestens über die Berechtigung zum Erstellen von Datenbanken verfügt (die Berechtigung wird aufgerufenCREATEDB
). Nach dem Erstellen dermyappuser
Rolle habe ich mich bei der Datenbank als angemeldetmyappuser
und dassuperduper
Schema erstellt, dessen Benutzer istmyappuser
. Dies funktionierte ohne Probleme.quelle
Ich bin gerade mit Amazon RDS darauf gestoßen.
Viele der Antworten sind bereits richtig, aber Sie können auch einfach die Rolle ändern.
Hier war meine Implementierung
psql -h ${PGHOST} -p ${PGPORT:-5432} -U ${PGUSER:-postgres} -c "ALTER USER renderer WITH CREATEDB PASSWORD '$RENDERPASSWORD'"
Während ich das Kennwort ändere, füge ich der Rolle auch die Berechtigung CREATEDB-Rolle hinzu.
quelle
Ich stand vor dem gleichen Problem. Um dies zu beheben, habe ich mich mit der neu erstellten Rolle angemeldet und die Datenbank erstellt. Irgendwie funktioniert Grant in RDS Postgres nicht.
quelle
Ich habe es behoben, indem ich mich mit dem
postgres
Benutzer angemeldet habe (und dann meine Änderungen übernommen habe, die in meinem Fall den Besitzer gewechselt haben):sudo -u postgres psql ALTER DATABASE my_database OWNER TO new_user;
quelle