ไม่สามารถเชื่อมต่อกับ mongodb errno: 61 การเชื่อมต่อถูกปฏิเสธ


91

ผมเพิ่งติดตั้ง MongoDB-2.6.0 กับHomebrew หลังจากติดตั้งสำเร็จฉันพยายามเชื่อมต่อโดยใช้mongoคำสั่ง ฉันได้รับข้อผิดพลาดต่อไปนี้ซึ่งไม่อนุญาตให้เชื่อมต่อ:

Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused

Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146

exception: connect failed

1
คุณแน่ใจหรือไม่ว่าบริการ mongod ยังทำงานอยู่ คุณมีตัวเลือกการกำหนดค่าใดในไฟล์ conf ของคุณ
ffflabs

คุณใช้ sudo apt-get เพื่อติดตั้งหรือไม่? ฉันได้อ่านเกี่ยวกับผู้ที่ประสบปัญหานี้ ... ลองลบและดาวน์โหลดผ่านไซต์MongoDBแทน
ฮัสซัน

ฉันติดตั้งด้วย homebrew คำแนะนำในเว็บไซต์อย่างเป็นทางการไม่ได้ระบุว่าฉันต้องตั้งค่าไฟล์. config ฉันเพิ่งดาวน์โหลดและเรียกใช้คำสั่ง 'พังพอน' ซึ่งส่งผลให้เกิดข้อผิดพลาดข้างต้น
Michael

ตรวจสอบบันทึกของคุณโดยทั่วไป/var/logs/mongodbถ้าฉันจำไม่ผิด
AlbertEngelB

ฉันติดตั้งใหม่ผ่านการดาวน์โหลดและคลายซิปไฟล์ ฉันกำลังเรียกใช้ 'mongo' และยังคงได้รับข้อผิดพลาดเดียวกัน
Michael

คำตอบ:


277

อาจเกิดขึ้นได้เมื่อบริการ mongodb ไม่ทำงานบนเครื่อง Mac เพื่อเริ่มต้นฉันพยายาม

brew services start mongodb

และมันได้ผล

แก้ไข: ตามการอภิปรายเกี่ยวกับ PR นี้ใน homebrew: https://github.com/Homebrew/homebrew/issues/30628

brew servicesเลิกใช้งานแล้วฉันมองไปรอบ ๆ SO และพบว่าคำตอบเหล่านี้ตอบคำถาม: วิธีที่ถูกต้องในการเริ่มบริการ mongod บน linux / OS X คืออะไร


8
ฉันได้รับข้อผิดพลาดจากคำสั่งนี้: "Unknown command: services"
ZeMoon

7
ไม่รองรับ 'บริการชง' อีกต่อไป: github.com/Homebrew/homebrew/issues/32006
Vitaly

7
ฉันลอง sudo mongodแทน mongo แล้วมันก็เริ่ม! ในการเข้าถึง mongo shell ฉันเปิดหน้าต่างเชลล์ใหม่และเขียน mongo และใช้งานได้ !! คุณสามารถค้นหาการติดตามข้อผิดพลาดทั้งหมดพร้อมวิธีแก้ไขได้ในบล็อกนี้
Ali Raza Bhayani

1
บริการชงไม่รองรับใน Mac OS X Yosemite ของฉันอีกต่อไป sudo mongodเริ่ม mongodb จากนั้นคำสั่ง mongo ก็ทำงาน ขอบคุณ @Ali Raza Bhayani
psun

2
ขอบคุณสำหรับการแก้ปัญหานี้ !! คำสั่งบริการชงใช้ได้ผลกับฉันใน MacOS X Sierra
Jcc.Sanabria

32

ฉันพบปัญหาเดียวกันทุกประการและนี่คือกระบวนการทีละขั้นตอนที่ชัดเจนเพื่อหลีกเลี่ยงข้อผิดพลาดนี้

ขั้นตอนที่ 1 - การติดตั้ง (อย่าทำตามขั้นตอนนี้หากคุณติดตั้ง MongoDB แล้ว):

brew update
brew install mongodb

ขั้นตอนที่ 2 - เรียกใช้ Mongo Daemon:

mkdir -p /data/db
sudo mongod

ขั้นตอนที่ 3 - เรียกใช้ Mongo Shell Interface:

mongo

ในลำดับนี้ฉันสามารถรันmongoคำสั่งได้โดยไม่มีข้อผิดพลาดใด ๆ ฉันได้ให้รายละเอียดเกี่ยวกับการติดตามข้อผิดพลาดและวิธีแก้ไขในบล็อกนี้ด้วย


1
นอกจากนี้ยังอ้างอิงในหน้าอย่างเป็นทางการของ MongoDB: docs.mongodb.org/v2.2/tutorial/install-mongodb-on-os-x/…
Paulo Oliveira

สิ่งนี้ได้ผลสำหรับฉันครั้งเดียว ... แต่แล้วมันก็ล้มลง: / ดูเหมือนว่าจะทำเคล็ดลับ: stackoverflow.com/a/22623543/1177832
danwild

นี่เป็นวิธีที่ดีในการชนะการต่อสู้และแพ้สงคราม อย่าเรียกใช้บริการในฐานะรูท
Miles Erickson

22

ในการแก้ปัญหาของคุณคุณต้องทำตามคำแนะนำที่ได้รับจากการชงหลังจากที่คุณใช้ "brew install mongodb"

ในการเริ่มต้น Launchd mongodb เมื่อเข้าสู่ระบบ:

ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

จากนั้นโหลด mongodb ทันที:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

หรือหากคุณไม่ต้องการ / ต้องการ launchctl คุณสามารถเรียกใช้:

mongod --config /usr/local/etc/mongod.conf

คุณอาจสามารถเรียกใช้คำสั่งสุดท้ายนั้นได้ แต่มันไม่ได้ผลสำหรับฉันและฉันต้องรันคำสั่งที่สอง เพื่อช่วยฉันในอนาคต ฉันเพิ่งเรียกใช้คำสั่งแรกด้วย หวังว่าจะช่วยได้!

แก้ไขวิธีการใช้ของ Hrishi brew services mongodb startได้ผลดีสำหรับฉัน ฉันคิดว่าพวกเขาควรรวมสิ่งนี้ไว้ใน mongo docs


ฉันใช้คำสั่งสุดท้ายและไปที่ localhost / 27017 ในเบราว์เซอร์ของฉันหน้าจอแจ้งว่า 'ดูเหมือนว่าคุณกำลังพยายามเข้าถึง MongoDB ผ่าน HTTP บนพอร์ตไดรเวอร์ดั้งเดิม' ดูเหมือนจะไม่ถูกต้อง ...
Michael

ตอนนี้ Mongo กำลังทำงานอยู่ใช่มั้ย? เช่นเดียวกับในคุณสามารถพิมพ์mongoในเชลล์และคุณไม่ได้รับข้อความปฏิเสธการเชื่อมต่ออีกต่อไป? คุณจะไม่สามารถเข้าถึง mongo จากเบราว์เซอร์ได้คุณจะต้องทำงานกับมันจาก cli
jh3y

ไม่คำสั่งในเชลล์จะดำเนินการหลังจากที่ฉันป้อน 'mongod --config /usr/local/etc/mongod.conf' มันเป็นเพียงพรอมต์ว่างเปล่า ฉันติดตั้งใหม่โดยไม่ใช้ homebrew และดาวน์โหลด zip จากเว็บไซต์ย้ายไฟล์ปฏิบัติการไปที่ / usr / local / bin แต่ตอนนี้ฉันยังคงได้รับข้อความแสดงข้อผิดพลาดเดียวกัน
Michael

ใช่คำสั่งสุดท้ายก็แขวนไว้สำหรับฉันด้วย ฉันจะเรียกใช้สองตัวแรกและคุณควรจะดี เมื่อแฮงค์เพียงแค่กดctrl + cและลองmongoหลังจากนั้น
jh3y

อืม ... มันยังใช้ไม่ได้ ฉันจะโพสต์ในฟอรัม mongoDB ขอบคุณสำหรับความช่วยเหลือ
Michael

16

ในแท็บอื่นคุณสามารถเริ่มต้น mongo shell ด้วย

mongod

จากนั้นกลับไปที่แท็บก่อนหน้าแล้วลองอีกครั้ง หากคุณมีปัญหาในการตั้งค่า mongoshell ของคุณโปรดดูลิงค์นี้บน mongo shell: http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/ หรือลิงค์นี้ในการติดตั้ง mongodb: http: / /docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/


สิ่งนี้ทำเพื่อฉัน ฉันมองข้ามการเริ่มใช้บริการ mongod โดยสิ้นเชิงก่อนที่จะพยายามเรียกใช้ mongo ขอบคุณ!
Matt Welander

7

ฉันมีปัญหาเดียวกันเมื่อโทร mongodจากบรรทัดคำสั่ง

sudo mongodฉันได้รับการแก้ไขโดยการเรียกนี้แทน


อย่าเรียกใช้บริการในฐานะรูท
Miles Erickson

4

ฉันมีข้อผิดพลาดเดียวกัน แต่เป็นสาเหตุที่แตกต่างกัน คิดว่าฉันจะโพสต์วิธีแก้ปัญหาที่นี่ในกรณีที่มีคนอื่นประสบปัญหา ผมได้รับข้อผิดพลาดนี้หลังจากที่ฉัน Mac mongorestore -d foo dump/foo/ไม่ถูกต้องปิดตัวลงในขณะที่ผมทำงาน

TL; DR : ฉันแก้ไขปัญหาโดยการลบความเสียหายfoo.nsไฟล์พร้อมกับfoo.0, foo.1... /usr/local/var/mongodb/จากโฟลเดอร์ข้อมูลของฉัน จากนั้นฉันรีสตาร์ทเซิร์ฟเวอร์ mongo brew services restart mongodbและฉันก็กลับมาเป็นปกติ

รายละเอียด : ฉันยังคงได้รับข้อผิดพลาดแม้ว่าจะพยายามเริ่มหรือรีสตาร์ทบริการ mongodb ผ่านทาง brew หรือ launchctl ในที่สุดฉันก็วิ่ง mongod --dbpath /usr/local/var/mongodb และเห็นว่าบริการไม่เริ่มทำงานจริง ๆ และลำดับการเริ่มต้นมีข้อผิดพลาดต่อไปนี้: [initandlisten] bad .ns file: /usr/local/var/mongodb/foo.ns [initandlisten] User Assertion: 10079:bad .ns file length, cannot open database ฉันกำจัด.nsไฟล์ที่ไม่ดีและไฟล์ข้อมูลที่เหลือและในครั้งต่อไปที่ฉันเริ่มบริการฉันก็ทำได้ดี .


1
ความเสียใจเพียงอย่างเดียวของฉันคือฉันมีเพียงหนึ่งโหวตที่จะให้: คำตอบอื่น ๆ ทั้งหมดไม่สนใจความจริงที่ว่าการกำหนดค่าการชงเริ่มต้นใส่ dbs ใน / usr / local / var / mongodb!
premiumFrye

1
Annnddd Mongo เพิ่งพังอีกครั้งดังนั้นตอนนี้ฉันต้องผ่านขั้นตอนนี้อีกครั้ง ดีมากฉันโหวตคำตอบของคุณแล้วฉันจะได้พบอีกครั้ง: D
premiumFrye

3

สำหรับฉันใน osx ฉันต้องฆ่าอินสแตนซ์เก่าที่รันอยู่แล้วการรีสตาร์ทก็ใช้งานได้

$>ps -aef | grep mongo
502  8047     1   0 11:52AM ??         0:00.23 /usr/local/opt/mongodb/bin/mongod --config /usr/local/etc/mongod.conf 

$>sudo kill 8047

$>sudo mongod

2

สำหรับใครก็ตามที่กำลังมองหาคำตอบสำหรับสิ่งนี้หลังจากที่ mac ของคุณอัปเดตเป็น OS Catalina แล้ว

วิ่ง

brew services start mongodb-community

ค้นหาข้อมูลเพิ่มเติมที่นี่: https://medium.com/@semmons245/arghhhh-thanks-to-the-catalina-os-update-this-now-needs-changing-987f416ebcbe


1

ฉันได้รับข้อผิดพลาดนี้หลังจากอัปเกรดเป็น mongo 3.6 ด้วย homebrew

บันทึกที่มีข้อความ/usr/local/var/log/mongodb/mongo.log shutting down with code:62รหัสข้อผิดพลาดนี้หมายความว่าฐานข้อมูลที่มีอยู่เก่าเกินไปที่จะทำงานกับ mongo เวอร์ชันปัจจุบัน

ฉันพบ 2 คำตอบในคำถาม SOอื่น :

ฉันเลือกที่จะอัพเกรด ในกรณีของฉันนั่นหมายความว่าฉันต้องดาวน์เกรดเป็น 3.4 รันคำสั่งในคอนโซล mongo จากนั้นอัปเกรดอีกครั้ง Mongo ต้องการให้คุณอัปเกรดเวอร์ชันหลักทีละหนึ่งเวอร์ชันดังนั้นอาจมีขั้นตอนเพิ่มเติมขึ้นอยู่กับว่าคุณกลับมาไกลแค่ไหน เอกสารจะแนะนำคุณ

brew switch*และbrew services restartคำสั่งที่ทำให้การแลกเปลี่ยนระหว่างรุ่นความเจ็บปวด


0

หากคุณติดตั้ง MongoDB แล้วก่อนอื่นให้ลองเรียกใช้ mongod ในฐานะผู้ใช้ sudo ฉันประสบปัญหาเนื่องจากไม่ได้เรียกใช้ mongod ในฐานะ superuser

ฉันได้วาง o / p สำหรับทั้งคำสั่ง ( mongodและsudo mongod ) ที่ด้านล่างสุดคุณสามารถตรวจสอบได้เช่นกัน แต่

ก่อนอื่นให้ลองทำสิ่งนี้

sudo mongod

ไม่ใช่สิ่งนี้

mongod

ฉันได้ติดตั้ง MongoDB บน ​​MAC OS X Sierra 10.12.6 แล้วโดยการรันคำสั่งต่อไปนี้ตามลำดับ

brew update
brew install mongodb --devel
brew services start mongodb

จากนั้นสร้างไดเร็กทอรีที่กระบวนการ mongod จะเขียนข้อมูลซึ่งเป็นทางเลือกเนื่องจากกระบวนการ mongod ใช้โดยค่าเริ่มต้นดูคำแนะนำที่เป็นประโยชน์นี้ที่https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os -x /

sudo mkdir -p /data/db

ในที่สุดก็เริ่มกระบวนการmongodดังนี้

sudo mongod

Oputput ของmongod (ล้มเหลว) และsudo mongod (สำเร็จ) คำสั่งบนเทอร์มินัลของฉัน

MacBook-Pro-2:appscheck admin$ mongod
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] MongoDB starting : pid=2698 port=27017 dbpath=/data/db 64-bit host=MacBook-Pro-2.local
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] db version v3.4.10
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2n  7 Dec 2017
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] allocator: system
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] modules: none
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] build environment:
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten]     distarch: x86_64
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten]     target_arch: x86_64
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] options: {}
2017-12-10T08:12:06.166+0530 I STORAGE  [initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
2017-12-10T08:12:06.166+0530 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2017-12-10T08:12:06.166+0530 I NETWORK  [initandlisten] shutdown: going to flush diaglog...
2017-12-10T08:12:06.167+0530 I CONTROL  [initandlisten] now exiting
2017-12-10T08:12:06.167+0530 I CONTROL  [initandlisten] shutting down with code:100


MacBook-Pro-2:appscheck admin$ sudo mongod
Password:
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] MongoDB starting : pid=2700 port=27017 dbpath=/data/db 64-bit host=MacBook-Pro-2.local
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] db version v3.4.10
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2n  7 Dec 2017
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] allocator: system
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] modules: none
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] build environment:
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten]     distarch: x86_64
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten]     target_arch: x86_64
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] options: {}
2017-12-10T08:12:14.084+0530 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=7680M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2017-12-10T08:12:14.560+0530 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2017-12-10T08:12:14.707+0530 I INDEX    [initandlisten] build index on: admin.system.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_version_32", ns: "admin.system.version" }
2017-12-10T08:12:14.707+0530 I INDEX    [initandlisten]      building index using bulk method; build may temporarily use up to 500 megabytes of RAM
2017-12-10T08:12:14.719+0530 I INDEX    [initandlisten] build index done.  scanned 0 total records. 0 secs
2017-12-10T08:12:14.720+0530 I COMMAND  [initandlisten] setting featureCompatibilityVersion to 3.4
2017-12-10T08:12:14.720+0530 I NETWORK  [thread1] waiting for connections on port 27017

จากนั้นฉันก็เปิดเทอร์มินัลใหม่เพื่อเริ่มค้นหาMongoDBมันใช้งานได้

MacBook-Pro-2:appscheck admin$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
> show dbs;
admin  0.000GB
local  0.000GB
> use practice
switched to db practice
>

แค่นั้นแหละ.


0

ฉันมีปัญหาเดียวกันและในการค้นหาไฟล์บันทึกฉันเห็นสิ่งนี้:

{2019-03-09T11:57:32.136-0500 I STORAGE  [initandlisten] 
exception in initAndListen: NonExistentPath: 
Data directory /usr/local/var/mongodb not found., terminating}

ดังนั้นฉันจึงสร้างไดเร็กทอรีที่/usr/local/var/mongodb ออกคำสั่ง brew services restart mongodb ฉันสามารถเปิดคอนโซล mongo ได้


-1

ฉันเดาว่าคุณไม่มีฐานข้อมูลที่ทำงานอยู่ขณะพยายามเข้าถึงการทดสอบผ่านคำสั่ง "mongo"

ก่อนอื่นให้รันคำสั่งนี้ในเทอร์มินัล:

mongod 

จากนั้นเปิดหน้าต่างเทอร์มินัลอื่นและเรียกใช้:

Mongo

ทุกอย่างควรจะใช้งานได้แล้ว


-1

ข้อผิดพลาดที่คล้ายกันของฉันได้รับการแก้ไขโดยการลบไฟล์ "sudo rm /data/db/mongod.lock" ในขณะที่พยายามเรียกใช้ mongod ตอนนี้คุณสามารถเรียกใช้ mongod แล้วก็ mongo

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.