Je suis connecté avec un compte superutilisateur et voici 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 j'obtiens cette erreur en essayant de créer le schéma:
ERROR: must be member of role "test"
Merci d'avance!
postgresql
roles
Ultranuke
la source
la source
Réponses:
J'ai rencontré ce problème lors de l'utilisation
CREATE DATABASE
sur Amazon RDS. Je pense que c'est essentiellement la même chose que l'utilisationCREATE SCHEMA
.Lors de l'utilisation d'Amazon RDS, l'utilisateur émettant 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 est appeléroot
, et je vais créer un rôleo
qui va posséder une base de donnéesd
: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
la source
GRANT o TO postgres;
avant de créer la base de données.Je suis tombé sur ce même problème, il se plaint du fait que l'utilisateur (principal) actuel avec lequel 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 et il vous permettra de créer le SCHEMA sans erreur:
GRANT <role> TO <master_user>;
la source
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 était de créer un nouveau rôle de groupe qui incluait mon super utilisateur et l'utilisateur qui possédait le schéma. Donc, pour vous, cela signifierait ajouter votre super utilisateur et utilisateur de test à un nouveau groupe de rôles:
CREATE ROLE users NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION; GRANT megausers TO testroles; GRANT test TO testroles;
Vous devriez maintenant pouvoir créer votre schmea
la source
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';
Se déconnecter
Se connecter 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 ....
la source
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
la source
GRANT service_role TO admin_user;
J'ai également rencontré ce problème sur RDS. Je me suis connecté en tant
root
qu'utilisateur, j'ai créé un rôle nommémyappuser
, puis j'ai essayé de créer un schéma appelésuperduper
dont le propriétaire estmyappuser
.J'ai trouvé une solution qui fonctionne. Créez le
myappuser
rôle et assurez-vous que ce rôle a au moins l'autorisation de créer des bases de données (le privilège est appeléCREATEDB
). Après avoir créé lemyappuser
rôle, je me suis connecté à la base de données en tant quemyappuser
et j'ai créé lesuperduper
schéma dont l'utilisateur estmyappuser
. Cela a fonctionné sans aucun problème.la source
J'étais confronté au même problème. Pour résoudre ce problème, je me suis connecté avec le rôle nouvellement créé et j'ai créé la base de données. D'une manière ou d'une autre, la subvention ne fonctionne pas dans RDS Postgres.
la source
Je viens de rencontrer cela en utilisant Amazon RDS.
Beaucoup de réponses sont déjà correctes, mais vous pouvez également simplement 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, tout en modifiant le mot de passe, j'ajoute également l'autorisation de rôle CREATEDB au rôle.
la source
Je l'ai corrigé en me connectant avec l'
postgres
utilisateur (puis en appliquant mes modifications, ce qui changeait la propriété dans mon cas):sudo -u postgres psql ALTER DATABASE my_database OWNER TO new_user;
la source