ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ 127.0.0.1 เชลล์ / mongo.js


88

เมื่อฉันตั้งค่า mongodb ในอูบุนตูของฉันฉันลอง: ./mongo มันแสดงข้อผิดพลาดนี้:

 couldn't connect to server 127.0.0.1 shell/mongo.js

แล้วฉันจะทำอย่างไร

ขอบคุณ


คุณติดตั้งได้อย่างไร? คุณใช้ความถนัดหรือไม่? คุณดาวน์โหลด tarbal โดยตรงหรือไม่?
Bryan Migliorisi

1
ฉันมีข้อผิดพลาดนี้และเป็นเพราะบน Ubuntu ฉันไม่ได้รันmongodก่อน
Connor Leech

คำตอบ:


124
  • ลบ lockfile ด้วยตนเอง: sudo rm /var/lib/mongodb/mongod.lock
  • เรียกใช้สคริปต์การซ่อมแซม: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

โปรดทราบสิ่งต่อไปนี้:

  • คุณต้องรันคำสั่งนี้ในฐานะผู้ใช้ mongodb หากคุณรันเป็น root รูทจะเป็นเจ้าของไฟล์ใน / var / lib / mongodb / ที่จำเป็นในการรัน mongodb daemon ดังนั้นเมื่อ daemon พยายามรันในภายหลังในฐานะผู้ใช้ mongodb มันจะไม่มีสิทธิ์เริ่มต้น . ในกรณีนี้คุณจะได้รับข้อผิดพลาดนี้: ไม่สามารถสร้าง / เปิดไฟล์ล็อคสำหรับ lockfilepath: /var/lib/mongodb/mongod.lock errno: 13 การอนุญาตถูกปฏิเสธการยุติ
  • บน Ubuntu คุณต้องระบุไฟล์คอนฟิกูเรชัน /etc/mongodb.conf โดยใช้แฟล็ก -f มิฉะนั้นจะมองหาไฟล์ข้อมูลผิดที่และคุณจะเห็นข้อผิดพลาดต่อไปนี้: ไม่มี dbpath (/ data / db /) กำลังยุติ

ลิงค์ที่ดี แก้ไขปัญหาได้อย่างตรงจุด
jaketrent

2
จะเรียกใช้ในฐานะผู้ใช้ mongodb ได้อย่างไร
user4951

เพียงเพิ่มตัวเองในกลุ่ม mongodb: useradd -G mongodb fady แทนที่ fady ด้วยชื่อผู้ใช้ของคุณ
fady mohamed osman

ฉันเรียกใช้การซ่อมแซมหลายครั้ง แต่ไม่ได้ผลจนกว่าฉันจะลบไฟล์. lock ด้วยตนเอง (ตามที่คุณระบุ) ตอนนี้ใช้งานได้ แต่ฉันแค่อยากรู้ว่าทำไมการลบไฟล์. lock ด้วยตนเองจึงทำงานได้?
Shahzeb Khan

2
ฉันต้องใช้ทั้งข้อมูลของคำตอบนี้และจากคำตอบของ @boulder_ruby เนื่องจาก "/ data / db /" ของฉันหายไป ไม่แน่ว่าอาจเป็นการอัปเดตที่ดีเพื่อให้คำตอบนี้สมบูรณ์ยิ่งขึ้น
Fabricio Buzeto

32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

นี่คือทั้งหมดบางครั้งอาจใช้เวลาสักครู่ในการเริ่ม mongo หลังจากดำเนินการเหล่านี้


ถ้าฉันลอง `sudo -u mongodb mongod -f /etc/mongodb.conf --repair` นี่คือสิ่งที่ฉันได้รับ:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus

21

ลองใช้ $ mongod

หากคุณได้รับข้อผิดพลาดเช่น

MongoDB shell version: 2.0.5
connecting to: test
Fri Jun  1 11:20:33 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed

hisham-agil:~ hisham$ mongod
mongod --help for help and startup options
Fri Jun  1 11:24:47 [initandlisten] MongoDB starting : pid=53452 port=27017 dbpath=/data/db/ 64-bit host=hisham-agil.local
Fri Jun  1 11:24:47 [initandlisten] db version v2.0.5, pdfile version 4.5
Fri Jun  1 11:24:47 [initandlisten] git version: nogitversion
Fri Jun  1 11:24:47 [initandlisten] build info: Darwin gamma.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:48:32 PST 2012; root:xnu-1699.24.23~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
Fri Jun  1 11:24:47 [initandlisten] options: {}
Fri Jun  1 11:24:47 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Fri Jun  1 11:24:47 dbexit: 
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close listening sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to flush diaglog...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: waiting for fs preallocator...
Fri Jun  1 11:24:47 [initandlisten] shutdown: lock for final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: closing all files...
Fri Jun  1 11:24:47 [initandlisten] closeAllFiles() finished
Fri Jun  1 11:24:47 dbexit: really exiting now

จากนั้นคุณพบข้อผิดพลาดพื้นฐานในการเริ่มต้นระบบที่พบได้บ่อย

โดยค่าเริ่มต้น mongod จะพยายามใช้ / data / db สำหรับไฟล์ฐานข้อมูลซึ่งในกรณีนี้ไม่มีอยู่

คุณไม่สามารถเริ่มต้นได้

mongo 

จนกว่าคุณจะจัดการ

mongod.

ลองสร้างไดเร็กทอรีเหล่านั้นและตรวจสอบให้แน่ใจว่าสามารถเขียนได้โดยผู้ใช้คนเดียวกันกับที่รันกระบวนการ mongod

** ดูคำถามที่คล้ายกัน - ได้รับข้อผิดพลาด "ข้อผิดพลาด: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ 127.0.0.1 shell / mongo.js" & เมื่อพยายามเรียกใช้ mongodb บน mac osx lion


คุณยังสามารถตั้งค่า dbpath ได้เช่นนี้: mongod --dbpath ../data
cbaigorri

20

นี่ไม่ใช่ข้อผิดพลาดจริงๆ ... สิ่งที่เกิดขึ้นที่นี่คือ Mongo อาศัยdaemonเพื่อเรียกใช้เซิร์ฟเวอร์ฐานข้อมูลภายในดังนั้นเพื่อที่จะ "เริ่มทำงาน" เซิร์ฟเวอร์ mongoในเชลล์ของคุณคุณต้องเริ่มบริการ mongoอันดับแรก.

สำหรับFedora Linux (ซึ่งเป็น Distro ที่ฉันใช้) คุณต้องเรียกใช้คำสั่งเหล่านี้:

1 sudo service mongod start
2 mongo

และคุณมีมัน! เซิร์ฟเวอร์กำลังจะทำงาน ตอนนี้หากคุณต้องการให้บริการ Mongo เริ่มทำงานเมื่อระบบบูทคุณต้องเรียกใช้:

sudo chkconfig --levels 235 mongod on

และนั่นคือทั้งหมด! หากคุณทำเช่นนั้นตอนนี้ในเชลล์คุณต้องพิมพ์mongoเพื่อเริ่มเซิร์ฟเวอร์ แต่มันก็ค่อนข้างดีปัญหาคือคุณต้องเริ่มบริการก่อนแล้วจึงเซิร์ฟเวอร์ :)

ปล. คำสั่งที่ฉันโพสต์อาจใช้ได้กับ linux distros อื่น ๆ เช่นกันไม่ใช่แค่ใน fedora ... ในกรณีที่คุณไม่จำเป็นต้องปรับแต่งบางคำขึ้นอยู่กับ distro ที่คุณใช้;)


วิธีแก้ปัญหาเดียวกันใช้กับคำถาม: stackoverflow.com/questions/7958228/…
Jmlevick

หลายครั้งที่ฉันนิ่งงันและเกาหัวเป็นเวลานานและในที่สุดก็ตระหนักว่า: 'โอ้ฉันต้อง sudo "
ben ผู้เขียน

2
และสำหรับรุ่น Debian / Ubuntu: sudo service mongodb start
ljs.dev

11

ฉันพบปัญหาเดียวกันเมื่อพยายามติดตั้ง mongo ฉันได้รับข้อผิดพลาดเป็น

ข้อผิดพลาด

"Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84"

วิธีการแก้:

ติดตั้ง mongod ก่อนโดยใช้:

sudo apt-get install mongodb-server

จากนั้นพิมพ์

mongod --dbpath /mongo/db

แล้ว

sudo rm /var/lib/mongodb/mongod.lock

แล้ว

sudo -u mongodb mongod -f /etc/mongodb.conf  --repair

ขอขอบคุณ


วิธีนี้จะลบฐานข้อมูลที่มีอยู่ใน mongo หรือไม่?
Evan

6

คุณต้องลบ lockfile mongod.lockหรือ/var/lib/mongodb/mongod.lockบน ubuntu จากนั้นคุณต้องเรียกใช้mongod.exeหรือservice mongodb startบน ubuntu ก่อนจากนั้นจึงเรียกใช้mongo.exeหรือmongoบน ubuntu


OP อยู่บน Ubuntu ดังนั้นฉันค่อนข้างมั่นใจว่าพวกเขาจะไม่ใช้.exeไฟล์ใด ๆ
me_and

ฉันได้รับข้อความแสดงข้อผิดพลาดนี้และไม่พบ "mongod.lock" ในระบบไฟล์ของฉัน คำแนะนำเหล่านี้ใช้ได้กับ Mac OSX หรือไม่
boulder_ruby

5

mongod ของคุณไม่ทำงาน (ตรวจสอบโดยใช้คำสั่ง "ps") หรือกำลังฟังที่อยู่ IP ภายนอกบางส่วนไม่ใช่ใน localhost ก่อนอื่นให้ตรวจสอบรายการกระบวนการว่า 'mongod' กำลังทำงานอยู่ ถ้าใช่ให้ตรวจสอบด้วย "netstat -nap" สำหรับพอร์ตที่เกี่ยวข้อง

แน่นอนว่าคุณสามารถเริ่ม mongod บนคอนโซลได้ด้วยตนเองหรือแม้แต่ดูไฟล์บันทึก mongod (หากมีการกำหนดค่าไว้ ... ขึ้นอยู่กับว่าคุณติดตั้ง mongod อย่างไร)


5

ก่อนอื่นคุณต้องตรวจสอบให้แน่ใจว่าไฟล์และไดเร็กทอรีทั้งหมดในโฟลเดอร์ / var / lib / mongodb / ของคุณ (หรือโฟลเดอร์ใดก็ตามที่ dbpath ชี้ไป) เป็นของผู้ใช้ mongodb และกลุ่ม mongodb

cd /var/lib/mongodb/
sudo chown mongodb filename.*
sudo chgrp mongodb filename.*
sudo chown -R mongodb directory
sudo chgrp -R mongodb directory

(แทนที่ชื่อไฟล์และไดเรกทอรีด้วยชื่อตามลำดับ)

จากนั้นคุณสามารถลบล็อคซ่อมแซมฐานข้อมูลและรีสตาร์ท daemon ตามที่คนอื่นพูดถึงแล้ว:

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

ทำไมถึงไม่มีการโหวตเพิ่มขึ้นสำหรับเรื่องนี้? นี่เป็นทางออกเดียวในบรรดารายการ SO ครึ่งโหลที่ฉันดูนั่นเหมาะกับฉัน ขอบคุณครับ.
FRD

คำสั่งเริ่มต้นด้วยไฟล์ config และบังคับให้ซ่อมแซมอยู่sudo -u mongodb mongod -f /etc/mongod.conf --repairใน Ubuntu 14
okoboko

5

เริ่มต้นเซิร์ฟเวอร์ Mongo ของคุณก่อนโดย

Users-MacBook-Pro:csv1 Admin$ mongod
all output going to: /usr/local/var/log/mongodb/mongo.log

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

Users-MacBook-Pro:csv1 Admin$ mongo

2

ตรวจสอบด้วยว่ารูทพาร์ติชันของคุณมีพื้นที่เพียงพอที่จะเริ่ม mongod

df -h /

คุณจะเห็น smth เช่นนี้ในการเปิดตัว mongod:

Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 12 17:02:59.159 dbexit: 
Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...


1

อาจเป็นการรวมกันของ $ PATH และปัญหาการอนุญาต

ลองทำตามขั้นตอนด้านล่าง:

อัปเดตตัวแปร $ PATH ให้ชี้ไปที่ไฟล์ MongoDB bin ของคุณ ในกรณีของฉันชงติดตั้ง MongoDB ในโฟลเดอร์นี้:

/usr/local/Cellar/mongodb/2.4.6/

ในการอัปเดตตัวแปร $ PATH ของคุณให้ทำดังนี้:

$ sudo vi /etc/paths

จากนั้นกด 'i' เพื่อแทรกข้อความใน Vi และต่อท้ายเส้นทาง MongoDB ของคุณที่ท้ายไฟล์ 'paths' และรีสตาร์ทเทอร์มินัล

/usr/local/Cellar/mongodb/2.4.6/bin

ใช้ 'Esc: w q' เพื่อบันทึกและออกจากโปรแกรมแก้ไข Vi

ใช้ echo เพื่อแสดงตัวแปรเส้นทางของคุณ:

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin

ตอนนี้ลองตรวจสอบเวอร์ชัน Mongo หากคุณติดตามแสดงว่าคุณมาถูกทางแล้ว!

$ mongo --version
MongoDB shell version: 2.4.6

ตอนนี้เราต้องสร้างไดเร็กทอรีฐานข้อมูล ฉันใช้ตำแหน่งเริ่มต้น '/ data / db' ที่แนะนำในเอกสาร MongoDB ฉันยังสร้างไดเร็กทอรีบันทึกเพื่อหลีกเลี่ยงปัญหาการอนุญาตในขณะที่ Mongo พยายามสร้างบันทึกใด ๆ เปลี่ยนความเป็นเจ้าของและจะได้งาน

$ sudo mkdir /data/db
$ sudo mkdir /data/log
$ whoami
username
$ chown -R username /data

ตอนนี้เราจะสร้างไฟล์กำหนดค่าเริ่มต้นสำหรับ MongoDB เพื่อให้เป็นครั้งแรกที่เราเรียกใช้คำสั่ง 'mongod' ตอนนี้ฉันต้องการที่จะชี้ให้เห็นว่า 'mongod' จะเริ่มบริการซึ่งจะรับฟังการเชื่อมต่อข้อมูลขาเข้า สิ่งนี้คล้ายกับการดำเนินการ '$ service mysqld start' มาเริ่มสร้างไฟล์ config กันเลย โปรดทราบว่าฉันได้สร้างไฟล์กำหนดค่าพื้นฐานแล้ว อย่างไรก็ตามคุณสามารถเพิ่มตัวแปรอื่น ๆ เพื่อกำหนดค่า MongoDB ได้ นี่เป็นครั้งแรกที่ฉันเล่นกับ MongoDB ดังนั้นฉันเพิ่งรู้มากพอ ๆ กับที่อ่านบนเอกสาร MongoDB ฉันสร้าง 'mongodb.conf'

$ sudo vi /etc/mongodb.conf

เพิ่มสิ่งต่อไปนี้:

fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true

โปรดทราบว่าพอร์ตเริ่มต้นสำหรับเซิร์ฟเวอร์ MongoDB คือ 27017 ใช้เส้นทางของคุณเองสำหรับ dbpath และ logpath ที่คุณสร้างในขั้นตอนที่ - 5 อย่าลืมปิดและบันทึกไฟล์ conf

ตอนนี้เราพร้อมที่จะเริ่มบริการ MongoDB แล้ว เปิด Terminal สองอินสแตนซ์ใน Terminal 1 ให้พิมพ์:

$ sudo mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3516
all output going to: /data/log/mongod.log
child process started successfully, parent exiting

หากคุณได้รับข้อความข้างต้นแสดงว่าคุณได้เริ่มใช้บริการ Mongod เรียบร้อยแล้ว

ตอนนี้ในการเชื่อมต่อใน Terminal 2 พิมพ์ดังต่อไปนี้:

$mongo test
MongoDB shell version: 2.4.6
connecting to: test
Server has startup warnings:
Tue Sep 3 16:55:43.527 [initandlisten]
Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>

ไม่สนใจคำเตือน แต่คุณเชื่อมต่อกับฐานข้อมูล 'ทดสอบ' สำเร็จแล้ว! เย็น!

นั่นคือทั้งหมด ฉันใช้วิธีนี้เมื่อฉันพยายามติดตั้งสำเนาของ MongoDB บน ​​Mac เป็นครั้งแรก ดูว่าสิ่งนี้ช่วยคุณได้หรือไม่

สำหรับโพสต์รายละเอียดที่คุณสามารถไปที่นี่ - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094

ฉันหวังว่ามันจะช่วยได้!

ไชโย Chinmay


แม้ว่าลิงก์นี้อาจตอบคำถามได้ แต่ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และระบุลิงก์เพื่อการอ้างอิง คำตอบแบบลิงก์เท่านั้นอาจไม่ถูกต้องหากหน้าที่เชื่อมโยงเปลี่ยนไป
Radim Köhler

@ RadimKöhlerขอบคุณสำหรับการแจ้งให้ทราบ ฉันได้แก้ไขคำตอบแล้ว หวังว่านี่จะช่วยใครบางคนได้ ไชโย
Chinmay

1

ฉันแก้ไขปัญหานี้บน ubuntu 12.04 โดยทำตามขั้นตอน:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) ฉันลบ mongo แล้วติดตั้งอีกครั้ง
4) sudo service mongodb restart

และทุกอย่างเรียบร้อยดี

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