“ERREUR: doit être membre du rôle” lors de la création d’un schéma dans PostgreSQL

Je suis connecté avec un compte superutilisateur et c’est le processus que je fais:

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

Le rôle est correctement créé mais je reçois cette erreur lorsque vous essayez de créer le schéma:

 ERROR: must be member of role "test" 

Merci d’avance!

J’ai rencontré ce problème lors de l’utilisation de CREATE DATABASE sur Amazon RDS. Je pense que c’est essentiellement la même chose que l’utilisation de CREATE SCHEMA .

Lors de l’utilisation d’Amazon RDS, l’utilisateur qui émet la CREATE DATABASE doit être membre du rôle qui sera le propriétaire de la firebase database. Dans mon cas, le compte super-utilisateur que j’utilise s’appelle root , et je vais créer un rôle o qui va posséder une firebase database 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 

Utilisez-vous RDS? Parce que j’obtiens le même problème lorsque je me connecte en tant que “superutilisateur” qu’ils créent pour vous. La façon dont j’ai pu résoudre ce problème consistait à créer un nouveau rôle de groupe comprenant mon super utilisateur et l’utilisateur propriétaire du schéma. Donc, pour vous, cela signifierait d’append votre super utilisateur et utilisateur test à un nouveau groupe de rôles:

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

Maintenant, vous devriez être capable de créer votre schmea

Eu ce problème avec RDS aussi.

Pour le résoudre:

Connectez-vous en tant que superutilisateur

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

Créer l’utilisateur

 CREATE USER newuser WITH CREATEDB PASSWORD 'password'; 

Connectez – Out

 \q 

Connectez-vous en tant que newuser

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

Créez votre firebase database / schéma

 CREATE SCHEMA/DATABASE .... 

Je suis tombé sur le même problème, il se plaint de l’utilisateur actuel (maître) avec lequel vous êtes connecté n’est pas membre du groupe d’utilisateurs que vous essayez de créer le schéma. Vous devez accorder l’access au rôle à votre utilisateur principal et cela vous permettra de créer le SCHEMA sans erreur:

 GRANT  TO ; 

J’ai également rencontré ce problème sur RDS. Je me suis connecté en tant qu’utilisateur root , créé un rôle nommé myappuser , puis essayé de créer un schéma appelé superduper dont le propriétaire est myappuser .

J’ai trouvé une solution qui fonctionne. Créez le rôle myappuser et assurez-vous que ce rôle dispose au moins de l’autorisation de créer des bases de données (le privilège s’appelle CREATEDB ). Après avoir créé le rôle myappuser , je me suis connecté à la firebase database en tant que myappuser et myappuser créé le schéma superduper dont l’utilisateur est myappuser . Cela a fonctionné sans aucun problème.

Ne devons-nous pas simplement accorder l’adhésion de l’utilisateur admin au rôle de service?

 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 

Je faisais face au même problème. Pour résoudre ce problème, je me suis connecté avec le rôle nouvellement créé et créé la firebase database. D’une manière ou d’une autre, la subvention ne fonctionne pas dans RDS Postgres.

Je viens de courir avec Amazon RDS.

Beaucoup de réponses sont déjà correctes, mais vous pouvez également modifier le rôle.

Voici ma mise en œuvre

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

Donc, tout en changeant le mot de passe, j’ajoute également l’autorisation de rôle CREATEDB au rôle.