मैं AWS Postgresql उदाहरण में एक सुपरयुसर क्यों नहीं बना सकता?


16

मेरे पास एक RWS उदाहरण (Postgresql) से कनेक्ट होने वाला AWS EC2 उदाहरण है। जब मैंने RDS उदाहरण बनाया, तो मैंने बताया कि DB रूट का उपयोगकर्ता नाम था: my_user1और पासवर्ड था password1। अब मैं एक भूमिका और एक सुपर-उपयोगकर्ता बनाने का प्रयास कर रहा हूं। लेकिन यह विफल रहता है:

$ createuser -P -d -s -e my_user2 --host myhost.com -U my_user1
Enter password for new role: XXXYYYZZZ
Enter it again: XXXYYYZZZ
Password: password1
CREATE ROLE my_user2 PASSWORD 'md5999999c0101a1d64afd57575e06f999c' SUPERUSER CREATEDB  CREATEROLE INHERIT LOGIN;
createuser: creation of new role failed: ERROR:  must be superuser to create superusers
$

जब मैं -sध्वज के बिना कमांड दोहराता हूं , तो यह काम करता है:

$ createuser -P -d -e my_user2 --host myhost.com  -U my_user1
Enter password for new role:
Enter it again:
Password:
CREATE ROLE my_user2 PASSWORD 'md5999999c0101a1d64afd57575e06f888c' NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN;
$

तो स्पष्ट रूप से, my_user1एक सुपर-उपयोगकर्ता बनाने की अनुमति नहीं है। लेकिन यह वह उपयोगकर्ता है जिसे मैंने कहा था कि आरडीएस मेरा व्यवस्थापक उपयोगकर्ता था! यदि my_user1सुपर-उपयोगकर्ता बनाने की अनुमति नहीं है, तो कौन करता है? और मुझे AWS से उनका उपयोगकर्ता नाम / पासवर्ड कैसे मिलेगा?


क्या pg_hba.conf का कहना है कि प्रमाणीकरण योजना स्थानीय उपयोगकर्ताओं के लिए सहकर्मी है?
drookie

Drookie, क्या यह फ़ाइल RDS उदाहरण पर ही है? मैंने अभी तक उस मशीन पर SSHed भी नहीं किया है।
साकिब अली

@SaqibAli आप RDS उदाहरण में SSH नहीं कर सकते।
सिजयोज

जवाबों:


23

RDS के उदाहरण अमेज़न द्वारा प्रबंधित किए जाते हैं। जैसे, आपको प्रतिकृति जैसी चीजों को तोड़ने से रोकने के लिए, आपके उपयोगकर्ता - यहां तक ​​कि रूट उपयोगकर्ता जिसे आप उदाहरण बनाते समय सेट करते हैं - में पूर्ण सुपरयुसर विशेषाधिकार नहीं होंगे।

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html

जब आप DB उदाहरण बनाते हैं, तो आपके द्वारा बनाए गए मास्टर उपयोगकर्ता सिस्टम को rds_superuser भूमिका में असाइन किया जाता है। Rds_superuser भूमिका एक पूर्व-परिभाषित अमेज़ॅन आरडीएस भूमिका है जो पोस्टग्रेक्यूएल सुपरसुअर भूमिका (स्थानीय रूप से पोस्टग्रेज में नामित पोस्टग्रेज) के समान है, लेकिन कुछ प्रतिबंधों के साथ। PostgreSQL सुपरसुअर भूमिका के साथ, rds_superuser भूमिका में आपके DB उदाहरण पर सबसे अधिक विशेषाधिकार हैं और आपको यह भूमिका उपयोगकर्ताओं को तब तक असाइन नहीं करनी चाहिए, जब तक उन्हें DB आवृत्ति की सबसे अधिक पहुँच की आवश्यकता न हो।


6
मैं सुपर डेटाबेस ध्वज का उपयोग किए बिना अपने डेटाबेस का बैकअप नहीं ले सकता pg_dump। वहाँ इस पर चारों ओर एक तरह से आरडीएस पर आरडीएस है?
चोवी

@chovy, grantअपने उपयोगकर्ता के लिए db स्वामी की भूमिका निभाने का प्रयास करें।
स्पाइक

3

यदि आप अपनी वर्तमान अनुमतियों को सूचीबद्ध करते हैं \du+या \dg+, आप देखेंगे कि आप एक सुपरसुसर नहीं हैं, लेकिन केवल अनुमत अनुमतियाँ भूमिका बनाएँ, DB बनाएँ । जैसे कि आप अपने आप को उन अनुमतियों को निर्दिष्ट करने की अनुमति नहीं देते हैं जिनसे आप वर्तमान में असाइन किए गए हैं।

आम तौर पर आपको किसी भी होस्ट किए गए वातावरण में रूट या सुपरयुसर अनुमति नहीं दी जाती है। मेरा सुझाव है कि आप एक कस्टम EC2 उदाहरण को स्पिन करें और संपूर्ण नियंत्रण के लिए स्थानीय रूप से PostgreSQL स्थापित करें।


2
क्या वास्तव में pg_dump के साथ amazon rds डेटाबेस का बैकअप लेने का कोई तरीका नहीं है?
चॉवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.