2014-10-31 13 views
37

ho effettuato l'accesso con un account superuser e questo è il processo che sto facendo:"ERRORE: deve essere membro del ruolo" Durante la creazione dello schema in PostgreSQL

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

Il ruolo è correttamente creato ma io ricevo questo errore quando provo a creare lo schema:

ERROR: must be member of role "test" 

Grazie in anticipo!

+0

Basta passare attraverso http://www.postgresql.org/docs/9.3/static/role-membership. html –

+0

Sto ancora avendo lo stesso problema, chiunque può per favore aiutarmi? – Ultranuke

risposta

20

Stai utilizzando RDS? Perché ottengo lo stesso problema quando effettuo l'accesso come "superutente" che creano per te. Il modo in cui sono riuscito a risolvere questo problema è stato quello di creare un nuovo ruolo di gruppo che includesse il mio superutente e l'utente che possedeva lo schema. Quindi per voi questo significherebbe aggiungendo il super-utente e utente di prova per un nuovo gruppo di ruoli:

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

Ora si dovrebbe essere in grado di creare lo schmea

+1

Questo è un po 'confuso, ma l'ho usato per capire cosa stava succedendo. Vedere la mia risposta: http://stackoverflow.com/a/34898033/242457 –

5

ho incontrato questo problema in RDS pure. Ho effettuato l'accesso come utente root, ho creato un ruolo denominato myappuser e ho quindi provato a creare uno schema denominato superduper il cui proprietario è myappuser.

Ho trovato una soluzione che funziona. Creare il ruolo myappuser e assicurarsi che questo ruolo disponga almeno dell'autorizzazione per creare database (il privilegio è denominato CREATEDB). Dopo aver creato il ruolo myappuser, ho effettuato l'accesso al database come myappuser e ho creato lo schema superduper il cui utente è myappuser. Questo ha funzionato senza problemi.

13

Aveva questo problema anche con RDS.

per risolverlo:

Login come superutente

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

creare l'utente

CREATE USER newuser WITH CREATEDB PASSWORD 'password'; 

Logout

\q 

Login come newuser

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

Crea il tuo DB/Schema

CREATE SCHEMA/DATABASE .... 
43

Mi sono imbattuto in questo problema quando si utilizza CREATE DATABASE su Amazon RDS. Penso che sia essenzialmente lo stesso di usare CREATE SCHEMA.

Quando si utilizza Amazon RDS, l'utente che rilascia il numero CREATE DATABASE deve essere un membro del ruolo che sarà il proprietario del database. Nel mio caso, l'account superuser che sto usando è chiamato root, e ho intenzione di creare un ruolo o che sta per possedere un 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 
+3

La stessa cosa, ma ho trovato che il nuovo utente non ha bisogno di avere il permesso CREATEDB. Ho creato un utente normale, assegnato quel ruolo utente al mio utente amministratore, quindi creato il database utilizzando l'utente amministratore con il proprietario impostato sull'utente normale. –

+0

Grazie ..... Ha funzionato per me .... – anupammaiti

+0

C'è una breve descrizione che descrive la causa di questo effetto su RDS qui .. https://blog.2ndquadrant.com/the-rds_superuser-role-isnt-that -super – Molomby

4

non lo fanno non ci resta che concedere il ammettere l'appartenenza utente al ruolo di servizio?

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 
+2

In Postgres 9.0 e successive la concessione include "TO": 'GRANT service_role TO admin_user;' – Grengas

12

mi sono imbattuto in questo stesso problema, si lamenta la (master) utente corrente si è connessi con non è un membro del gruppo di utenti si è cercare di creare lo schema per. Si dovrebbe concedere l'accesso al ruolo l'utente principale e che vi permetterà di creare lo schema senza errori:

GRANT <role> TO <master_user>; 
Problemi correlati