"ERROR: भूमिका का सदस्य होना चाहिए" जब PostgreSQL में स्कीमा बनाते हैं


87

मैं एक सुपरयुजर खाते से लॉग इन हूं और यह वह प्रक्रिया है जो मैं कर रहा हूं:

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

भूमिका सही ढंग से बनाई गई है, लेकिन स्कीमा बनाने की कोशिश करते समय मुझे यह त्रुटि मिल रही है:

ERROR:  must be member of role "test"

अग्रिम में धन्यवाद!



मुझे अब भी वही समस्या है, कोई भी मेरी मदद कर सकता है?
अल्ट्रान्यूके

जवाबों:


127

CREATE DATABASEअमेजन आरडीएस का उपयोग करने पर मैं इस मुद्दे पर भाग गया । मुझे लगता है कि यह अनिवार्य रूप से उपयोग के रूप में ही है CREATE SCHEMA

अमेज़ॅन आरडीएस का उपयोग करते समय जारी करने वाले उपयोगकर्ता CREATE DATABASEको उस भूमिका का सदस्य होना चाहिए जो डेटाबेस का मालिक होगा। मेरे मामले में, मैं जिस सुपरसुअर खाते का उपयोग कर रहा हूं उसे कॉल किया जाता है root, और मैं एक ऐसी भूमिका बनाने जा रहा हूं oजो एक डेटाबेस के लिए जा रही है 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
एक ही बात है, लेकिन मैंने पाया है कि नए उपयोगकर्ता को सृजन की अनुमति की आवश्यकता नहीं है। मैंने एक नियमित उपयोगकर्ता बनाया, उस उपयोगकर्ता भूमिका को मेरे व्यवस्थापक उपयोगकर्ता को प्रदान किया, फिर नियमित उपयोगकर्ता के लिए सेट स्वामी के साथ व्यवस्थापक उपयोगकर्ता का उपयोग करके डेटाबेस बनाया।
निक स्पेस

वहाँ .. यहाँ आरडीएस पर इस आशय का कारण का वर्णन ऊपर एक छोटी लिखने है blog.2ndquadrant.com/the-rds_superuser-role-isnt-that-super
Molomby

2
PostgreSQL के लिए Google क्लाउड एसक्यूएल पर मेरी यही त्रुटि थी GRANT o TO postgres;और डेटाबेस बनाने से पहले मुझे चलाने के अलावा यह जवाब हल था ।
साइमन वाटसन

38

मैं इसी समस्या के साथ आया था, यह आपके द्वारा लॉग किए गए वर्तमान (मास्टर) उपयोगकर्ता के बारे में शिकायत कर रहा है, उस उपयोगकर्ता समूह का सदस्य नहीं है जिसके लिए आप स्कीमा बनाने का प्रयास कर रहे हैं। आपको अपने मास्टर उपयोगकर्ता तक भूमिका पहुंच प्रदान करनी चाहिए और यह आपको त्रुटि के बिना SCHEMA बनाने देगा:

GRANT <role> TO <master_user>;

24

क्या आप आरडीएस का उपयोग कर रहे हैं? क्योंकि मुझे वही मुद्दा मिलता है जब मैं "सुपरयुजर" के रूप में लॉग इन करता हूं जो वे आपके लिए बनाते हैं। जिस तरह से मैं इसे ठीक करने में सक्षम था वह एक नई समूह भूमिका बनाने के लिए था जिसमें मेरे सुपर उपयोगकर्ता और स्कीमा के स्वामित्व वाले उपयोगकर्ता शामिल थे। तो आपके लिए इसका अर्थ होगा अपने सुपर उपयोगकर्ता और परीक्षण उपयोगकर्ता को एक नई भूमिका समूह में जोड़ना:

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

अब आपको अपनी विद्वता पैदा करने में सक्षम होना चाहिए


1
यह थोड़ा उलझा हुआ है, लेकिन मैंने इसका उपयोग अंततः काम करने के लिए किया था जो कि चल रहा था। मेरी प्रतिक्रिया देखें: stackoverflow.com/a/34898033/242457
डेविड जोन्स

17

आरडीएस के साथ भी यह समस्या थी।

इसे हल करने के लिए:

सुपरयुसर के रूप में लॉगिन करें

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

उपयोगकर्ता बनाएँ

CREATE USER newuser WITH CREATEDB PASSWORD 'password';

लॉग आउट

\q

इससे लॉगिन करें newuser

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

अपना DB / स्कीमा बनाएँ

CREATE SCHEMA/DATABASE ....

8

क्या हमें केवल व्यवस्थापक उपयोगकर्ता को सेवा भूमिका के लिए सदस्यता नहीं देनी है?

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

4
9.0 और इसके बाद के GRANT service_role TO admin_user;
अनुदानों

5

मैंने आरडीएस पर भी इस मुद्दे का सामना किया है। मैंने rootउपयोगकर्ता के रूप में लॉग इन किया , नाम की भूमिका बनाई myappuserऔर फिर एक स्कीमा बनाने की कोशिश की superduperजिसका मालिक है myappuser

मुझे एक समाधान मिला जो काम करता है। myappuserभूमिका बनाएँ , और सुनिश्चित करें कि इस भूमिका को कम से कम डेटाबेस बनाने की अनुमति है (विशेषाधिकार कहा जाता है CREATEDB)। myappuserभूमिका बनाने के बाद , मैंने डेटाबेस में लॉग इन किया myappuserऔर superduperस्कीमा बनाया जिसका उपयोगकर्ता है myappuser। इसने बिना किसी समस्या के काम किया।


0

मैं उसी मुद्दे का सामना कर रहा था। इसे हल करने के लिए, मैंने नई बनाई गई भूमिका के साथ लॉग इन किया और डेटाबेस बनाया। किसी तरह, अनुदान RDS पोस्टग्रेज में काम नहीं करता है।


0

मैं अमेज़ॅन आरडीएस का उपयोग करके बस इसमें भाग गया।

बहुत सारे उत्तर पहले से ही सही हैं, लेकिन आप केवल भूमिका को बदल सकते हैं।

यहाँ मेरा कार्यान्वयन था

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

इसलिए पासवर्ड बदलते समय, मैं भूमिका में क्रीएटेड रोल की अनुमति भी जोड़ रहा हूं।


0

मैंने इसे postgresउपयोगकर्ता के साथ लॉगिन करके तय किया (और फिर मेरे परिवर्तन लागू करें, जो मेरे मामले में स्वामित्व बदल रहा था):

sudo -u postgres psql
ALTER DATABASE my_database OWNER TO new_user;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.