Vagrant Box पर Postgres से कनेक्ट करने में असमर्थ - कनेक्शन ने मना कर दिया?


10

सबसे पहले, मैं Vagrant और Postgres में नया हूं।

मैंने बिना किसी परेशानी के http://files.vagrantup.com/lucid32.box का उपयोग करके अपना वैग्रेंट उदाहरण बनाया । मैं चलाने में सक्षम हूं vagrant upऔर vagrant sshबिना मुद्दे के।

मैंने एक छोटे से फेरबदल के साथ निर्देशों का पालन ​​किया , मैंने "पोस्टग्रैस्कल पोस्टग्रैसक्कल-कंट्रीब" के बजाय "पोस्टग्रैस्कल-8.4-पोस्टगिस" पैकेज स्थापित किया।

मैंने सर्वर का उपयोग शुरू किया:

postgres@lucid32:/home/vagrant$ /etc/init.d/postgresql-8.4 start

योनि के उदाहरण से जुड़ा हुआ है, मैं psqlमुद्दे के बिना उदाहरण से कनेक्ट करने के लिए उपयोग कर सकता हूं ।

मेरे वैग्रांटफाइल में मैंने पहले ही जोड़ा था:

config.vm.forward_port 5432, 5432

लेकिन जब मैं स्थानीय होस्ट से psql चलाने की कोशिश करता हूं तो मुझे यह मिलता है:

psql: could not connect to server: Connection refused
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

मुझे यकीन है कि मुझे कुछ आसान याद आ रहा है। कोई विचार?

अपडेट करें:

मुझे इस तरह के एक मुद्दे का संदर्भ मिला और लेख ने सुझाव दिया:

psql -U postgres -h localhost

उसके साथ मुझे मिलता है:

psql: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.

जवाबों:


5

आपके द्वारा उल्लिखित ब्लॉग पोस्ट के निर्देश ऑबंटू के लिए बिल्कुल भी सही नहीं हैं: वे एक स्व-संकलित सर्वर की स्थापना से टुकड़ों का उपयोग करते हैं जो पैक संस्करण के साथ अच्छी तरह से मिश्रण नहीं करते हैं।

एक / usr / स्थानीय / pgsql / डेटा नहीं बनाना चाहिए और उस निर्देशिका में initdb चलाना चाहिए, क्योंकि ubuntu पैकेज उपयोगकर्ता की ओर से उपयोग करता है /var/lib/postgresql/<pg-version-number>/<cluster-name>और चलता है initdb

"/Tmp/.s.PGSQL.5432" का उल्लेख करने से हुई त्रुटि बताती है कि इस फ़ाइल के लिए अपेक्षित स्थान गलत है (ubuntu के लिए)। इसमें होना चाहिए /var/run/postgresql। यह संभवतः मापदंडों के साथ मैन्युअल रूप से initdb चलाने के कारण है जो ubuntu के साथ असंगत हैं।

गैर-स्थानीय कनेक्शन को सक्षम करने के लिए संपादित करने के लिए postgresql.conf और pg_hba.conf फाइलें अंदर होनी चाहिए /etc/postgresql/8.4/main, और / usr / स्थानीय / pgsql / डेटा नहीं।

/etc/init.d/postgresql-8.4जड़ से postgres उपयोगकर्ता द्वारा नहीं शुरू किया जाना चाहिए (/etc/init.d में सब कुछ के रूप में),।

PGDATA को मैन्युअल रूप से सेट नहीं किया जाना चाहिए, क्योंकि फिर से यह वास्तव में इस तरह से हो जाता है कि ubuntu कैसे संकुल कार्य करता है।

मेरा उत्तर ब्लॉग पोस्ट से किसी भी निर्देश का पालन किए बिना पोस्टग्रेजिकल-8.4 पैकेज को शुद्ध करने और पुन: स्थापित करने के लिए होगा। postgresql-8.4-postgis postgresql-8.4 पर निर्भर करता है इसलिए इसे भी हटा दिया जाएगा। साथ ही /etc/bash.bashrc में PGDATA की सेटिंग को पूर्ववत करना सुनिश्चित करें।


मैं अब इनस्टॉल कर रहा हूँ, लेकिन आपने अपने जवाब में देखा कि आपने सुझाव दिया था कि फ़ाइल के लिए गलत जगह दिख रही उबंटू के लिए रास्ता गलत था। क्या OSX पर क्लाइंट के चलने के कारण हो सकता है जबकि सर्वर एक ubuntu बॉक्स है?

इसलिए मैंने पुन: स्थापित किया और ठीक उसी त्रुटि को प्राप्त किया। मैंने थोड़ा और चारों ओर देखा और पाया कि मेरे पास iptables में पोर्ट नहीं खुले हैं। निम्नलिखित निर्देशों के बाद यहां: cyberciti.biz/tips/howto-iptables-postgresql-open-port.html मैं कनेक्ट करने में सक्षम हूं।

मैं यह सुनिश्चित करने के लिए नहीं कह सकता कि यदि पुनर्स्थापना फिक्स का हिस्सा था, लेकिन यह निश्चित रूप से सहायक था। इसलिए मैं तुम्हें जीत दे रहा हूं

जब क्लाइंट और सर्वर अलग-अलग होस्ट पर होते हैं, तो psql को psql -h <server> [optional other arguments]जहां <Server> होस्टनाम या IP एड्रेस होता है (और इस मामले में ubuntu बॉक्स) होस्टनाम या आईपी एड्रेस नहीं होता है। सवाल में यह नहीं लगता है कि आप इसे इस तरह से बुला रहे थे इसलिए मैं मान रहा था कि सभी कमांड सर्वर पर लॉन्च किए गए थे। वैसे भी मैं वास्तव में सकारात्मक हूं कि कनेक्शन को स्थापित किया जा सकता था, भले ही पुन: स्थापित करना एक सामान्य उपाय था।

मैं इसे कॉल कर रहा हूं जैसे: psql -U postgres -h localhost क्योंकि मेरे पास योनि पोर्ट फॉरवर्डिंग सेटअप है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.