Je suis connecté avec un compte superutilisateur et voici le processus que je suis en train de faire:
1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test
Le rôle est correctement créé, mais j'obtiens cette erreur en essayant 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 d'utiliser CREATE SCHEMA
.
Lors de l'utilisation d'Amazon RDS, l'utilisateur qui a émis le CREATE DATABASE
doit être membre du rôle qui sera le propriétaire de la base de données. Dans mon cas, le compte superutilisateur que j'utilise s'appelle root
et je vais créer un rôle o
qui va posséder une base de données 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
Je suis tombé sur le même problème, le fait de se plaindre de l’utilisateur (maître) actuel auquel vous êtes connecté n’est pas membre du groupe d’utilisateurs pour lequel vous essayez de créer le schéma. Vous devez accorder l'accès au rôle à votre utilisateur principal, ce qui vous permettra de créer le SCHEMA sans erreur:
GRANT <role> TO <master_user>;
Utilisez-vous RDS? Parce que je reçois le même problème lorsque je me connecte en tant que "superutilisateur" créé pour vous. La façon dont j'ai pu résoudre ce problème a été de créer un nouveau rôle de groupe incluant mon super utilisateur et l'utilisateur à qui appartient le schéma. Donc, pour vous, cela signifierait ajouter votre super utilisateur et votre 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 pouvoir créer votre schmea
Eu aussi ce problème avec RDS.
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 base de données/schéma
CREATE SCHEMA/DATABASE ....
Ne devons-nous pas simplement accorder l'adhésion de l'utilisateur administrateur 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
J'ai également rencontré ce problème sur RDS. Je me suis connecté en tant qu'utilisateur root
, j'ai créé un rôle nommé myappuser
, puis tenté 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 qu'il 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 base de données en tant que myappuser
et j'ai créé le schéma superduper
dont l'utilisateur est myappuser
. Cela a fonctionné sans aucun problème.
Je viens de rencontrer cela en utilisant Amazon RDS.
La plupart des 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'"
Ainsi, lors de la modification du mot de passe, j'ajoute également l'autorisation du rôle CREATEDB au rôle.
Je faisais face au même problème. Pour résoudre ce problème, j'ai ouvert une session avec le rôle nouvellement créé et créé la base de données .