2012-01-12 15 views
22

मैं जबकि डेटाबेस डंप करने की कोशिश कर, मैंPostgresql डंप अनुमति नहीं दी

linuxuser $ sudo su postgres 
linuxuser $ [sudo] password for linuxuser:... 
$ pg_dump -h localhost mydb >tempfile 
$ sh: cannot create tempfile: Permission denied 

क्या समस्या में प्रवेश किया इस त्रुटि मिलती है? मैंने अभी ताजा पोस्टग्रेस्क्ल स्थापित किया है।

उत्तर

42

निर्देशिका में लिखें जहां पोस्टग्रेस उपयोगकर्ता के पास पहुंच है। उदाहरण के लिए /tmp

$ pg_dump -h localhost mydb >/tmp/tempfile 

आपके प्रयास में पोस्टर उपयोगकर्ता अन्य उपयोगकर्ता से संबंधित कुछ यादृच्छिक निर्देशिका में फ़ाइल बनाने का प्रयास करता है।

5

sudo su postgres वर्तमान निर्देशिका को नहीं बदलता है, इसलिए आप अभी भी linuxuser की होम निर्देशिका में हैं और पोस्टग्रेज़ को इसमें लिखने की कोई अनुमति नहीं है। एक अलग निर्देशिका

2

postgres उपयोगकर्ता

अन्य सही जवाब के रूप में करने के लिए बदलें कहा है, जिसमें फ़ोल्डर आप को बचाने बैकअप उपयोगकर्ता postgres (ऑपरेटिंग सिस्टम उपयोगकर्ता खाते) करने के लिए आवंटित की अनुमति नहीं है कोशिश कर रहे हैं। postgres उपयोगकर्ता बैकअप उपयोगिता चला रहा है। यह उपयोगकर्ता खाता पोस्टग्रेस स्थापना प्रक्रिया के दौरान बनाया गया था। आपने एक अलग नाम इस्तेमाल किया हो सकता है, लेकिन डिफ़ॉल्ट postgres है। अनुमतियां

समाधान के साथ

फ़ोल्डर के लिए या तो लगता है या किसी फ़ोल्डर जहां postgres उपयोगकर्ता पढ़ने-लिखने के लिए अनुमतियां पैदा करते हैं।

मैक ओएस एक्स

मैक ओएस एक्स (पहाड़ शेर) में, मैं खोजक में इस तरह के एक फ़ोल्डर बनाने के लिए कर रहा हूँ।

  1. खोजक में, एक नया फ़ोल्डर बनाएं। इसे चुनें
    इस उदाहरण में, मैंने postgres_backups नामक एक फ़ोल्डर बनाया है।
  2. File>Get Info चुनें।
  3. Sharing & Permissions अनुभाग के लिए प्रकटीकरण त्रिकोण खोलें।
  4. उपयोगकर्ताओं की सूची में कोई अन्य आइटम जोड़ने के लिए प्लस बटन पर क्लिक करें।
    उपयोगकर्ताओं की एक सूची "शीट" संवाद में दिखाई देती है।
  5. सूची से postgres उपयोगकर्ता का चयन करें।
  6. Privilege कॉलम में, postgres पंक्ति के लिए, पॉपअप मेनू को Read & Write पर बदलें।
  7. Get Info विंडो बंद करें। किया हुआ।

अब आप अपने पोस्टग्रेस बैकअप फ़ाइलों को उस फ़ोल्डर में निर्देशित कर सकते हैं।

screen shot of a "Get Info" window in the Finder

वैसे, मैं बैकअप और पुनर्स्थापित करने के लिए pgAdmin एप्लिकेशन का उपयोग करें। नियंत्रण + वांछित डेटाबेस पर क्लिक करें और Backups… चुनें। PgAdmin ऐप शायद आपके पोस्टग्रेज़ इंस्टॉलेशन के साथ बंडल किया गया था।

0

सबसे पहले आपको जो करना है वह उपयोगकर्ता पोस्टगर्स पर स्विच नहीं है। उपयोग बैकअप के लिए इस आदेश:

% mkdir backup 

% chmod 0777 backup 

% su postgres 

[enter password] 

$ cd backup 

$ pg_dump mydb >tempfile 

$ exit 

"tempfile" हो जाएगा:

pg_dump -U username -h localhost dbname > /db.sql 
2

बैकअप और पुनर्स्थापना किसी भी unpriviledged उपयोगकर्ता कि postgres कार्यशील निर्देशिका पर अनुमतियों को बदलकर सुपर उपयोगकर्ता पासवर्ड पता करके किया जा सकता पोस्टग्रेस और उसी समूह के स्वामित्व वाले उपयोगकर्ता

0

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

pg_dump -U username -O dbname > 'filename.sql' 

यकीन है कि आप उद्धरण फ़ाइल नाम जो की तुलना में (">") चिह्न अधिक से अधिक इस प्रकार के आसपास (एकल या डबल उद्धरण काम करने के लिए लग रहे हैं) बनाओ। उपर्युक्त उदाहरणों में फ़ाइल नाम के चारों ओर उद्धरण नहीं हैं। एक बार मैंने कोशिश की, मुझे अब अनुमति अस्वीकृत त्रुटियां नहीं मिलीं।

संबंधित मुद्दे