postgresql: मैं एक क्लस्टर के लिए भूमिका कैसे डंप और पुनर्स्थापित करूं?


27

क्लस्टर में भूमिकाएँ कहाँ संग्रहीत की जाती हैं, और मैं उन्हें कैसे डंप करूँ?

मैंने एक db का pg_dump किया और फिर उसे एक अलग क्लस्टर में लोड किया, लेकिन मुझे इनमें से बहुत सारी त्रुटियाँ हैं:

psql:mydump.sql:3621: ERROR:  role "myrole" does not exist 

तो जाहिर तौर पर मेरे डीबी के डंप में भूमिकाएं शामिल नहीं हैं। मैंने 'पोस्टग्रैब्स' डीबी को डंप करने की कोशिश की, लेकिन मुझे वहां भूमिकाएं नहीं मिलीं।

क्या मुझे उपयोग करने की आवश्यकता है pg_dumpall --roles-only?

Postgresql संस्करण 8.4.8 और 9.1.4 OS: उबंटू 11.04 नैटी

जवाबों:


37

से CREATE ROLEप्रलेखन :

ध्यान दें कि भूमिकाएँ डेटाबेस क्लस्टर स्तर पर परिभाषित की जाती हैं, और इसलिए क्लस्टर में सभी डेटाबेस में मान्य हैं।

चूंकि pg_dumpएक ही डेटाबेस को डंप करता है, आप उस उपयोगिता के साथ भूमिकाएं नहीं निकाल सकते। pg_dumpall --roles-onlyआदेश आप काम करेंगे प्रस्तावित - लेकिन आप इसके उत्पादन फिल्टर करने के लिए इतना है कि केवल वांछित भूमिकाओं नई क्लस्टर में बनाया जाएगा पड़ सकता है।

रोल्स को pg_authidकैटलॉग में संग्रहीत किया जाता है , जो शारीरिक रूप से data/global/पोस्टग्रेक्यूएल इंस्टॉलेशन के सबफ़ोल्डर में संग्रहीत किया जाता है , साथ में अन्य क्लस्टर-वाइड टेबल। आप दृश्य के pg_authidमाध्यम से सामग्री की क्वेरी कर सकते हैं pg_roles

नोट : आपको भूमिकाओं को डंप करने के लिए सुपरयुसर अधिकारों की आवश्यकता होगी। अन्यथा, आप एक अनुमति पर इनकार किया पाने चाहते हैं SELECTपर pg_authid- और यहां तक कि जब एक सुपर उपयोगकर्ता अनुदान SELECTअधिकार, आप एक ही त्रुटि मिलती होगी। इस मामले में, हालांकि, आप pg_authidसीधे क्वेरी के द्वारा भूमिकाओं को सूचीबद्ध कर सकते हैं, COPYइसे एक फ़ाइल में डाल सकते हैं और आवश्यक CREATE ROLEऔर ALTER ROLEकथन बनाने के लिए कुछ जादू को रोल कर सकते हैं ।


क्या आप जोड़ सकते हैं कि सभी भूमिकाओं को कैसे पुनर्स्थापित किया जाए (यानी कोई फ़िल्टरिंग की आवश्यकता नहीं)?
एथन फुरमान

1
सभी भूमिकाओं को पुनर्स्थापित करने के लिए, बस pg_dumpall --roles-onlyवांछित साइकल शेल के आउटपुट को कॉपी और पेस्ट करें । या विशिष्ट CREATE ROLEऔर ALTER ROLEतर्ज
फर्नांडो फैब्रेटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.