postgresql पोर्ट भ्रम 5433 या 5432?


128

मैंने OSX पर postgresql स्थापित किया है। जब मैं psql चलाता हूं, मुझे मिलता है

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5433"?

हालाँकि, / etc / सेवाओं से

postgresql      5432/udp    # PostgreSQL Database
postgresql      5432/tcp    # PostgreSQL Database
#                          Tom Lane <tgl@sss.pgh.pa.us>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

5433 पर prrho का कब्जा है, 5432 को pg को सौंपा गया है। से जुड़ सकता हूं

psql -p 5432

लेकिन psql को यह क्यों लगता है कि यह 5433 है और मैं डिफ़ॉल्ट रूप से psql को सही जगह पर कैसे बनाऊं?


5
जांचें कि क्या पर्यावरण चर PGPORTपरिभाषित किया गया है: postgresql.org/docs/current/static/libpq-envars.html
a_horse_with_no_name

जवाबों:


187

/etc/servicesकेवल सलाहकार है, यह प्रसिद्ध बंदरगाहों की सूची है। इसका मतलब यह नहीं है कि कुछ भी वास्तव में उस पोर्ट पर चल रहा है या नामांकित सेवा उस पोर्ट पर चलेगी।

PostgreSQL के मामले में अगर यह उपलब्ध है तो पोर्ट 5432 का उपयोग करना विशिष्ट है। यदि ऐसा नहीं है, तो अधिकांश इंस्टॉलर अगले मुफ्त पोर्ट का चयन करेंगे, आमतौर पर 5433।

आप देख सकते हैं कि वास्तव में netstatटूल का उपयोग करके क्या चल रहा है (ओएस एक्स, विंडोज और लिनक्स पर उपलब्ध है, कमांड लाइन सिंटैक्स तीनों में भिन्न है)।

विभिन्न पोस्टग्रेक्यूक्यू पैकेजों की भयानक गड़बड़ी से मैक ओएस एक्स सिस्टम पर यह और जटिल हो गया है - ओएस के लिए बनाया गया पोस्टग्रेजक्यूएल का प्राचीन संस्करण, पोस्टग्रैस.ऐप, होमब्रे, मैकस्पोर्ट्स, एंटरप्राइजबीडी इंस्टॉलर आदि।

क्या होता है समाप्त होता है कि उपयोगकर्ता पीजी स्थापित करता है और एक पैकेजिंग से एक सर्वर शुरू करता है, लेकिन एक अलग पैकेजिंग से क्लाइंट psqlऔर libpqक्लाइंट का उपयोग करता है । आमतौर पर ऐसा तब होता है जब वे Postgres.app या homebrew Pg चला रहे होते हैं और psqlOS के साथ उस लिंक के साथ जुड़ते हैं । न केवल ये कभी-कभी अलग-अलग डिफ़ॉल्ट पोर्ट होते हैं, लेकिन मैक ओएस एक्स के साथ शिप किए गए पीजी में एक अलग डिफ़ॉल्ट यूनिक्स सॉकेट पथ होता है , इसलिए भले ही सर्वर उसी पोर्ट पर चल रहा हो, यह एक ही यूनिक्स सॉकेट को नहीं सुन रहा होगा।

अधिकांश मैक उपयोगकर्ता इसके साथ काम करते हैं बस tcp / ip के साथ psql -h localhost। यदि आवश्यक हो, तो आप एक पोर्ट भी निर्दिष्ट कर सकते हैं psql -h localhost -p 5433। आपके पास कई PostgreSQL इंस्टेंस चल सकते हैं इसलिए सुनिश्चित करें कि आप उपयोग करके सही एक से जुड़ रहे हैं select version()और SHOW data_directory;

आप एक यूनिक्स सॉकेट निर्देशिका भी निर्दिष्ट कर सकते हैं; unix_socket_directoriesआप जिस PostgreSQL इंस्टेंस को कनेक्ट करना चाहते हैं, उसकी सेटिंग चेक करें और उदाहरण के लिए psql -h, उसके साथ निर्दिष्ट करें psql -h /tmp

एक क्लीनर समाधान आपके सिस्टम को सही करने के लिए है PATHताकि psqlऔर libpqPostgreSQL के साथ जुड़े आप वास्तव में चल रहे हैं क्या पहले पर मिलती है PATH। उस का विवरण आपके मैक ओएस एक्स संस्करण पर निर्भर करता है और आपने कौन से पीजी पैकेज स्थापित किए हैं। मैं मैक का उपयोग नहीं करता हूं और वर्तमान में उपलब्ध की तुलना में अधिक समय खर्च किए बिना उस तरफ बहुत अधिक विवरण नहीं दे सकता।


23

OSX पर त्वरित उत्तर, अपने पर्यावरण चर सेट करें।

>export PGHOST=localhost

>export PGPORT=5432

या आपको जो भी चाहिए।


16

पोस्टग्रेज का डिफ़ॉल्ट पोर्ट आमतौर पर इसमें कॉन्फ़िगर किया गया है:

sudo vi /<path to your installation>/data/postgresql.conf

Ubuntu पर यह हो सकता है:

sudo vi /<path to your installation>/main/postgresql.conf

portइस फ़ाइल में खोजें ।


बिग OSSQL के साथ मैक OSX पर यह यहाँ है:~/PostgreSQL/data/pg96
शेन

7

@A_horse_with_no_name की टिप्पणी के लिए धन्यवाद , मैंने अपनी PGPORT की परिभाषा pg_env.sh में 5432 में बदल दी। मेरे लिए यह समस्या तय हो गई। मुझे नहीं पता कि पोस्टग्रेज ने इसे 5433 के रूप में सेट क्यों किया, जब यह 5432 पर सेवा की मेजबानी कर रहा था।


7

ऐसा लगता है कि ऐसा होने का एक सबसे सामान्य कारण यह है कि यदि आप किसी मौजूदा इंस्टॉलेशन की सेवा को रोके बिना PostgreSQL का नया संस्करण स्थापित करते हैं। यह मेरा एक विशेष सिरदर्द था। स्थापित करने या अपग्रेड करने से पहले, विशेष रूप से ओएस एक्स पर और एंटरप्राइज डीबी से एक क्लिक इंस्टॉलर का उपयोग करके, सुनिश्चित करें कि आगे बढ़ने से पहले आप पुराने इंस्टॉलेशन की स्थिति की जांच कर लें।


हां, हमने postgresql-9.5 स्थापित किया था जब 9.4 पहले ही स्थापित किया गया था, इसलिए 9.5 ने डिफ़ॉल्ट पोर्ट के रूप में 5433 को चुना
vaxysteveve

मैंने लंबे समय से 5432 और 5433 का उपयोग किया है, मैंने 5436 देखा है, लेकिन अगर किसी को रचनात्मकता या विभिन्न ओएस-एस पर कुछ डिफ़ॉल्ट नहीं पता है।
डेविल

3

मैं इस समस्या में भी भाग गया, यह समाप्त हो गया कि मेरे पास एक ही समय में दो पोस्टग्रैज सर्वर चल रहे थे। मैंने उनमें से एक की स्थापना रद्द कर दी और पोर्ट को वापस 5432 में बदल दिया और अब ठीक काम करता है।


2

मैक ओएस हाई सिएरा पर PgAdmin 4 में मेरे लिए , सर्वर के तहत PostrgreSQL10 डेटाबेस पर क्लिक करना बाएं कॉलम में , फिर गुण टैब में, कनेक्शन के तहत पोर्ट के रूप में 5433 दिखाया गया । (मुझे नहीं पता कि क्यों, क्योंकि मैंने इंस्टॉल के दौरान 5432 को चुना था)। वैसे भी, मैंने गुण टैब के अंतर्गत संपादन आइकन पर क्लिक किया , इसे 5432 में बदला , सहेजा गया और इससे समस्या हल हुई। जाओ पता लगाओ।


यह सब आपको 5432 पर पहले से चल रहे सर्वर से कनेक्ट करने की अनुमति देता है, यही कारण है कि आप ऐसा करने के बाद कनेक्ट कर सकते हैं। सर्वर आपके संस्थापन के अनुसार ५४३२ पर चल रहा था जैसा आपने सही कहा है।
शेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.