2015-06-17 4 views
11

पर सेट किए जाने तक काम नहीं करेगा, मैंने वास्तव में कोशिश की, यहां तक ​​कि MongoDB को पुनर्स्थापित भी करें।MongoDB bind_ip 0.0.0.0

और यह MongoDB bind_ip error: bind() failed errno:99 Cannot assign requested address for socket

यह काम करता है के लिए अगर bind_ip स्थापित करने के लिए एक ही है: 127.0.0.1,192.118.96.10,42.112.36.110

: 0.0.0.0, या 127.0.0.1

$ sudo service mongod start 
mongod start/running, process 30040 
$ sudo service mongod restart 
mongod stop/waiting 
mongod start/running, process 29704 
$ mongo --port 19708 
MongoDB shell version: 3.0.3 
connecting to: 127.0.0.1:19708/test 
> 

यह अगर करने के लिए bing_ip सेट काम नहीं करेगा

$ sudo service mongod start 
mongod start/running, process 29969 
$ sudo service mongod restart 
stop: Unknown instance: 
mongod start/running, process 29766 
$ mongo --port 19708 
MongoDB shell version: 3.0.3 
connecting to: 127.0.0.1:19708/test 
2015-06-17T06:32:34.625+0000 W NETWORK Failed to connect to 127.0.0.1:19708 
reason: errno:111 Connection refused 
2015-06-17T06:32:34.627+0000 E QUERY 
Error: couldn't connect to server 127.0.0.1:19708 (127.0.0.1), connection attempt failed 
at connect (src/mongo/shell/mongo.js:181:14) 
at (connect):1:6 at src/mongo/shell/mongo.js:181 
exception: connect failed 

स्थान:

/etc/mongod.conf

dbpath=/var/lib/mongodb 

logpath=/var/log/mongodb/mongod.log 

logappend=true 

port = 19708 

# ips, eg: 
# private ip for mongodb server: 192.118.96.10 
# public ip for remote app server: 42.112.36.110 

bind_ip = 127.0.0.1,192.118.96.10,42.112.36.110 

auth = true 

अग्रिम धन्यवाद में 210

$ which mongod 
/usr/bin/mongod 
$ which mongo 
/usr/bin/mongo 

विन्यास।

उत्तर

15

संपादित करें: मैं मौसम मैं बस मेरा जवाब के साथ या यदि bind_ip के व्यवहार बदल गया था गलत था पता नहीं है, लेकिन यह संभव है कई, अलग आईपी

bind_ip:127.0.0.1,10.0.0.1,8.8.8.8 

तो करने के लिए बाध्य करने के लिए , सबसे अधिक संभावना है कि आईपी पते में से एक मोंगोड को बाध्य करने के लिए बाध्य किया गया था, जो कि मशीन पर मौजूद नहीं था।


आप केवल एक ही आईपी के mongod बाध्य कर सकते हैं, 0.0.0.0 "सभी उपलब्ध नेटवर्क इंटरफेस पर सुनने के लिए" उर्फ ​​होने के साथ।

तो या तो

bind_ip=127.0.0.1 

पाश वापस इंटरफेस को सुनने के लिए उपयोग करें या

bind_ip=<someIP> 

कि आईपी को सुनने के लिए केवल या

bind_ip=0.0.0.0 

को सुनने के लिए सभी सिस्टम पर उपलब्ध आईपीएस।

यदि आपको कई विशिष्ट आईपी सुनने की आवश्यकता है, तो यह बहुत संभावना है कि आपका सिस्टम डिज़ाइन किसी भी तरह खराब हो गया है।

+0

यह आम तौर पर एक गलत विचार 0.0.0.0 –

+0

से कनेक्शन के लिए @DushanSavich मैं हिम्मत स्वीकार करने के लिए है वस्तु। बड़े क्लस्टर के लिए, जिसमें गतिशील रूप से असाइन किए गए आईपी पते पसंद का टूल हो सकते हैं (उदाहरण के लिए डीएचसीपी, बूटप और किकस्टार्ट के साथ मशीनों की स्थापना), यह 0.0.0.0 को सुनना उचित हो सकता है, क्योंकि सिस्टम आईपी पता होगा सेटअप लिखते समय अनिश्चित। जबकि मैं मानता हूं कि 0.0.0.0 को सुनते समय बहुत सावधान रहना महत्वपूर्ण है, मैं इस बात से सहमत नहीं हूं कि यह एक बुरी बात है। –

+0

मैं भी असहमत हूं। मैं चाहता हूं कि मेरी रिमोट वीपीएन विकास मशीन वीपीएन इंटरफ़ेस पर कनेक्ट हो सकें, और मैं स्थानीयहोस्ट को भी कनेक्ट करना चाहता हूं। मैं नहीं चाहता कि यह इंटरनेट से जुड़े इंटरफ़ेस पर सुनें। क्या मेरा (स्वीकार्य रूप से बहुत कॉम्पैक्ट) सिस्टम डिज़ाइन खराब हो गया है? –

0

अरे मैं MongoDB खोल संस्करण का उपयोग कर रहा हूं: 3.2.6।

bindIP = 127.0.0.1,192.168.0.50 
bindIP = [127.0.0.1,192.168.0.50] 
bind_ip = 192.168.6.38 

काम नहीं कर रहा, मैं इस आदेश का उपयोग mongod.conf संपादित किया है

sudo -i gedit /etc/mongod.conf file 

और बदल bind_ip = 0.0.0.0 bind_ip = 192.168.6.38 यह ठीक काम कर रहा करने के लिए ....

10

मूर्खतापूर्ण गलती के कारण मुझे भी यही समस्या थी।

लाइन और अंतरिक्ष समस्या पर टिप्पणी की गई थी।

क्या मैं गुणकों को गलत

# network interfaces 
net: 
    port: 27017 
#bindIp: 127.0.0.1 
bindIp: privateIp 
बजाय

net: 
    port: 27017 
    bindIp: 10.1.2.4 
बाँध के लिए

किया

bindIp: [127.0.0.1,10.128.0.2] 

उम्मीद है कि इस सवाल का जवाब किसी के लिए उपयोगी ips।

+0

मैं उबंटू 14.04 एलटीएस पर मोंगोडीबी तैनात करता हूं। bindIp: [127.0.0.1,10.128.0.2] मेरे लिए काम करता है। धन्यवाद! –

0

प्रलेखन कहा

"आप एकाधिक आईपी पतों के लिए mongod बाध्य करने के लिए अल्पविराम से अलग मानों की सूची जोड़ सकते हैं।"

तो, यह सच नहीं है ...

1

मैं इस मुद्दे के साथ एक दीवार के खिलाफ मेरे सिर की धड़कन घंटे बिताए। आखिरकार, मुझे जो मिला वह लॉग और गुगलिंग को देखकर मुझे कहीं मिला (जब मुझे 'मोंगो बाइंड आईपी मल्टीप्ल' (इत्यादि) गुगलिंग करते समय मिला तो मुझे इस तरह के पृष्ठों का एक भार था जो मदद नहीं करता था)। पहले, /etc/mongod.conf में ब्लॉक कि मेरे लिए काम किया था:

# network interfaces 
net: 
    port: 27017 
    bindIp: 127.0.0.1,172.16.1.2 

कोई स्थान नहीं, कोई उद्धरण, कोई कोष्ठक ... लेकिन फिर भी इसके साथ सही पुनरारंभ MongoDB एक त्रुटि दे दी है और फिर इसे से इनकार कर दिया शुरू करना। मैंने कई अन्य कॉन्फ़िगरेशन की कोशिश करने में घंटों बिताए जो गलत थे (जो निराशाजनक है क्योंकि इस लाइन की शुद्धता वास्तव में समस्या को हल नहीं करती थी और मुझे पता था कि कोई और था)।

मैं MongoDB सॉकेट फ़ाइल को हटाने से इसे हल करने में सक्षम था:

rm /etc/mongodb-27017.sock 

इस के बाद, चल

systemctl restart mongod 

त्रुटियों के बिना काम किया। दिलचस्प बात (जिसने इसे वास्तव में निराशाजनक बना दिया) वह था कि परीक्षण और त्रुटि प्रक्रिया के दौरान यदि मैंने bindIP को केवल 127.0.0.1 पर सेट किया और मैंगोड को फिर से शुरू किया, तो यह काम किया, जिससे मुझे लगता है कि यह लाइन ठीक थी और समस्याएं थीं वैकल्पिक प्रविष्टियों/वाक्यविन्यास के साथ मैं कोशिश कर रहा था। (मेरा सबसे अच्छा अनुमान यह है कि सॉकेट फ़ाइल में कुछ आईपीएस का संदर्भ देता है? मैं कोडिंग के उस तत्व से अपरिचित हूं।)

सॉकेट हटाने के बाद मैं फिर से मोंगो में खोलने में सक्षम था (प्रमाणीकरण सक्षम के साथ आवश्यक विकल्प):

mongo -u admin -p password --authenticationDatabase "admin") 

जो स्थापित करता है कि 127.0.0.1 काम करता है और यह भी मेरे दूरस्थ app से कनेक्ट करने के लिए (मेरे मौजूदा परिदृश्य में nodebb परीक्षण उदाहरण मैं की स्थापना कर रहा हूँ)।

2

मोंगो 3.6.2 समुदाय

मेरे लिए समाधान के/etc/mongod अनुभाग को संपादित करने के लिए किया गया था।conf

# network interfaces 
net: 
    port: 27017 
    bindIp: 127.0.0.1,192.168.1.240 # No brackets, No spaces, only comma separated 

#security 

तो बचाने के लिए और पुनः आरंभ करने के लिए इस करते हैं और सेवा की पुष्टि: यहाँ

> service mongod restart 
> service mongod status 

कोई विफलता, अब सत्यापित करें कि कोई सुन रहा है:

> netstat -a |grep :27017 

tcp 0 0 yourhostname:27017 0.0.0.0:*  LISTEN 
tcp 0 0 localhost:27017  0.0.0.0:*  LISTEN 

अब आप अपने पसंदीदा का उपयोग कर कनेक्ट मोंगो टूल्स या कमांड लाइन। /etc/mongod.conf में विभिन्न स्वरूपण की

कुछ परिणाम केवल पहले आईपी में

  • अल्पविराम और अंतरिक्ष परिणाम के लिए बाध्य किया जा रहा।
  • अंतरिक्ष केवल केवल पहले आईपी में विभाजक परिणाम के लिए बाध्य किया जा रहा
  • [] विफलता में परिणाम चारों शुरू करने के लिए mongod