không thể kết nối với máy chủ 127.0.0.1 shell / mongo.js


88

khi tôi thiết lập mongodb trong ubuntu của mình, tôi thử: ./mongo nó hiển thị lỗi này:

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

vậy tôi có thể làm gì ,

cảm ơn


Làm thế nào mà bạn cài đặt nó? Bạn đã sử dụng một năng khiếu? Bạn đã tải xuống tarbal trực tiếp?
Bryan Migliorisi

1
tôi đã có lỗi này và đó là vì trên ubuntu Tôi không chạy mongodđầu tiên
Connor Leech

Câu trả lời:


124
  • Xóa tệp khóa theo cách thủ công: sudo rm /var/lib/mongodb/mongod.lock
  • Chạy tập lệnh sửa chữa: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Xin lưu ý những điều sau:

  • Bạn phải chạy lệnh này với tư cách là người dùng mongodb. Nếu bạn chạy nó dưới dạng root, thì root sẽ sở hữu các tệp trong / var / lib / mongodb / cần thiết để chạy daemon mongodb và do đó khi daemon chạy sau với tư cách là người dùng mongodb, nó sẽ không có quyền khởi động . Trong trường hợp đó, bạn sẽ gặp lỗi này: Không thể tạo / mở tệp khóa cho lockfilepath: /var/lib/mongodb/mongod.lock errno: 13 Quyền bị từ chối, chấm dứt.
  • Trên Ubuntu, bạn phải chỉ định tệp cấu hình /etc/mongodb.conf bằng cách sử dụng cờ -f. Nếu không, nó sẽ tìm kiếm các tệp dữ liệu không đúng chỗ và bạn sẽ thấy lỗi sau: dbpath (/ data / db /) không tồn tại, chấm dứt.

Liên kết tuyệt vời. Đã giải quyết vấn đề một cách chính xác.
jaketrent

1
Câu trả lời là ở trên bây giờ.
fady mohamed Osman

2
làm thế nào để chạy nó với tư cách là người dùng mongodb?
user4951

Chỉ cần thêm chính bạn vào nhóm mongodb: useradd -G mongodb fady thay thế fady bằng tên người dùng của bạn.
fady mohamed Osman

2
Tôi đã phải sử dụng cả thông tin của câu trả lời này và từ câu trả lời của @boulder_ruby. Điều này vì '/ data / db /' của tôi bị thiếu. Có lẽ nó có thể là một bản cập nhật tốt để câu trả lời này được hoàn thiện hơn.
Fabricio Buzeto

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

Đây là tất cả, đôi khi, phải mất một chút thời gian để khởi động mongo sau khi thực hiện các thao tác này.


Nếu tôi thử `sudo -u mongodb mongod -f /etc/mongodb.conf --repair` thì đây là những gì tôi nhận được:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus

21

Đang thử chạy $ mongod

Nếu bạn gặp lỗi vi như

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

Sau đó, bạn gặp phải một lỗi khởi động cơ bản khá phổ biến.

Theo mặc định, mongod sẽ cố gắng sử dụng / data / db cho các tệp cơ sở dữ liệu của nó, trong trường hợp này, không tồn tại.

Bạn không thể bắt đầu

mongo 

cho đến khi bạn xử lý

mongod.

Hãy thử tạo các thư mục đó và đảm bảo rằng chúng có thể được ghi bởi cùng một người dùng đang chạy quy trình mongod.

** Xem câu hỏi tương tự-- Gặp lỗi, "Lỗi: không thể kết nối với máy chủ 127.0.0.1 shell / mongo.js" & khi cố gắng chạy mongodb trên mac osx lion


bạn cũng có thể thiết lập các DBPATH như vậy: mongod --dbpath ../data
cbaigorri

20

Đây thực sự không phải là lỗi ... Điều xảy ra ở đây là Mongo dựa vào daemon để chạy máy chủ cơ sở dữ liệu cục bộ, vì vậy để "kích hoạt" máy chủ mongo trong trình bao của bạn, bạn phải khởi động dịch vụ mongo Đầu tiên.

Đối với Fedora Linux (là Distro tôi sử dụng) Bạn phải chạy các lệnh sau:

1 sudo service mongod start
2 mongo

Và bạn có nó rồi đấy! máy chủ sẽ chạy. Bây giờ, nếu bạn muốn dịch vụ Mongo bắt đầu khi hệ thống khởi động thì bạn phải chạy:

sudo chkconfig --levels 235 mongod on

Và đó là tất cả! Nếu bạn làm điều đó, bây giờ trong shell bạn chỉ phải gõ mongo để khởi động máy chủ nhưng điều đó khá nhiều, vấn đề là bạn phải khởi động DỊCH VỤ trước rồi đến MÁY CHỦ :)

PS Các lệnh tôi đã đăng cũng có thể hoạt động trên các bản phân phối linux khác, không chỉ trên fedora ... Trong trường hợp không, có thể bạn phải tinh chỉnh một số từ tùy thuộc vào bản phân phối bạn đang sử dụng;)


Giải pháp tương tự áp dụng cho câu hỏi: stackoverflow.com/questions/7958228/…
Jmlevick

Vì vậy, rất nhiều lần tôi bối rối và vò đầu bứt tai trong một thời gian dài, và cuối cùng nhận ra: 'ồ, tôi chỉ cần làm như vậy thôi. "
ben author

2
và cho các biến thể Debian / Ubuntu: sudo service mongodb start
ljs.dev

11

Tôi gặp vấn đề tương tự khi cố gắng cài đặt mongo. Tôi gặp lỗi khi,

lỗi

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

Giải pháp:

Đầu tiên cài đặt mongod bằng cách sử dụng:

sudo apt-get install mongodb-server

Sau đó gõ

mongod --dbpath /mongo/db

Sau đó

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

Sau đó

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

Cảm ơn bạn


Phương pháp này có xóa các cơ sở dữ liệu hiện có trong mongo không?
Evan

6

Bạn cần xóa tệp khóa mongod.lockhoặc /var/lib/mongodb/mongod.locktrên ubuntu, sau đó bạn cần chạy mongod.exehoặc service mongodb starttrên ubuntu trước, sau đó chạy mongo.exehoặc mongotrên ubuntu.


OP trên Ubuntu, vì vậy tôi khá chắc chắn rằng họ sẽ không sử dụng bất kỳ .exetệp nào .
me_and

Tôi nhận được thông báo lỗi này và tôi không thể tìm thấy "mongod.lock" trên hệ thống tệp của mình. Các hướng dẫn này có áp dụng cho Mac OSX không?
boulder_ruby

5

Mongod của bạn không chạy (kiểm tra bằng lệnh "ps") hoặc nó đang nghe trên một số địa chỉ IP bên ngoài chứ không phải trên localhost. Vì vậy, trước tiên hãy kiểm tra danh sách quy trình nếu 'mongod' đang chạy. Nếu có, hãy kiểm tra bằng "netstat -nap" để biết cổng liên quan.

Tất nhiên, bạn có thể khởi động mongod trên bảng điều khiển theo cách thủ công hoặc thậm chí nhìn vào logfile mongod (nếu có một tệp được cấu hình ... tùy thuộc vào cách bạn cài đặt mongod).


5

Trước tiên, bạn phải đảm bảo rằng tất cả các tệp và thư mục trong thư mục / var / lib / mongodb / của bạn (hoặc bất kỳ thư mục nào mà dbpath trỏ đến) thuộc về người dùng mongodb và nhóm mongodb.

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

(Thay thế tên tệp và thư mục bằng tên tương ứng của chúng)

Sau đó, bạn có thể xóa khóa, sửa chữa cơ sở dữ liệu và khởi động lại daemon như những người khác đã đề cập:

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

Làm thế nào mà không có sự ủng hộ cho điều này? Đây là giải pháp duy nhất trong số nửa tá mục SO mà tôi đã xem xét, phù hợp với tôi. Cảm ơn ngài.
FRD

Các lệnh để bắt đầu với các tập tin cấu hình và một lực lượng sửa chữa là sudo -u mongodb mongod -f /etc/mongod.conf --repairtrên Ubuntu 14.
okoboko

5

Đầu tiên hãy khởi động máy chủ mongo của bạn bằng cách

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

Sau đó, mở một cửa sổ đầu cuối khác và mở trình bao

Users-MacBook-Pro:csv1 Admin$ mongo

2

Ngoài ra, hãy kiểm tra xem phân vùng gốc của bạn có đủ dung lượng để khởi động mongod không.

df -h /

Bạn sẽ thấy thông báo như thế này khi khởi chạy 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

Trên Ubuntu, hãy thử điều này:

sudo invoke-rc.d mongodb start

1

Nó có thể là sự kết hợp của $ PATH và vấn đề Quyền.

Hãy thử các bước sau:

Cập nhật biến $ PATH của bạn để trỏ đến tệp bin MongoDB của bạn. Trong trường hợp của tôi, hãy cài đặt MongoDB vào thư mục này:

/usr/local/Cellar/mongodb/2.4.6/

Để cập nhật biến $ PATH của bạn, hãy làm như sau:

$ sudo vi /etc/paths

Sau đó, nhấn 'i' để chèn văn bản trong Vi và nối đường dẫn MongoDB của bạn vào cuối tệp 'đường dẫn' và khởi động lại thiết bị đầu cuối.

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

Sử dụng 'Esc: w q' để lưu và thoát khỏi trình chỉnh sửa Vi.

Sử dụng echo để hiển thị biến đường dẫn của bạn:

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

Bây giờ hãy thử kiểm tra phiên bản Mongo, nếu bạn nhận được theo dõi, thì bạn đang đi đúng hướng!

$ mongo --version
MongoDB shell version: 2.4.6

Bây giờ chúng ta cần tạo thư mục cơ sở dữ liệu. Tôi đã sử dụng vị trí '/ data / db' mặc định được đề xuất trong tài liệu MongoDB. Tôi cũng đã tạo một thư mục nhật ký để tránh mọi vấn đề về quyền trong khi Mongo cố gắng tạo bất kỳ nhật ký nào. Thay đổi quyền sở hữu và điều đó sẽ thực hiện công việc.

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

Bây giờ, chúng tôi sẽ tạo một tệp cấu hình mặc định cho MongoDB để được cung cấp lần đầu tiên chúng tôi chạy lệnh 'mongod'. Bây giờ, tôi cũng muốn chỉ ra rằng 'mongod' sẽ bắt đầu một dịch vụ, dịch vụ này sẽ lắng nghe các kết nối dữ liệu đến. Điều này cũng tương tự khi thực thi '$ service mysqld start'. Hãy tiếp tục và tạo tệp cấu hình. Hãy nhớ rằng tôi đã tạo tệp cấu hình rất cơ bản. Tuy nhiên, bạn có thể thêm nhiều biến khác để cấu hình MongoDB. Đây là lần đầu tiên tôi chơi với MongoDB, vì vậy tôi chỉ biết nhiều như tôi đọc trên tài liệu MongoDB! Tôi đã tạo 'mongodb.conf'.

$ sudo vi /etc/mongodb.conf

Thêm sau:

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

Xin lưu ý rằng cổng mặc định cho máy chủ MongoDB là 27017. Sử dụng đường dẫn của riêng bạn cho dbpath và logpath mà bạn đã tạo ở Bước - 5. Đừng quên đóng và lưu tệp conf.

Bây giờ chúng ta đã sẵn sàng để bắt đầu dịch vụ MongoDB của mình. Mở hai phiên bản của Terminal. Trong Terminal 1, nhập:

$ 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

Nếu bạn nhận được thông báo trên, thì hãy biết rằng bạn đã khởi động thành công dịch vụ Mongod của mình.

Bây giờ, để kết nối với nó, trong Terminal 2, nhập sau:

$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
>

Bỏ qua các cảnh báo, nhưng bạn đã kết nối thành công với cơ sở dữ liệu 'kiểm tra'! Mát mẻ!

Đó là tất cả. Tôi đã áp dụng giải pháp này khi tôi cố gắng cài đặt bản sao MongoDB trên máy Mac của mình lần đầu tiên. Xem nếu điều này giúp bạn quá.

Để có bài đăng chi tiết, bạn có thể truy cập vào đây - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 .

Tôi hy vọng nó sẽ giúp!

Chúc mừng, Chinmay


Mặc dù liên kết này có thể trả lời câu hỏi, nhưng tốt hơn hết bạn nên đưa các phần thiết yếu của câu trả lời vào đây và cung cấp liên kết để tham khảo. Các câu trả lời chỉ có liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi.
Radim Köhler

@ RadimKöhler, cảm ơn bạn đã chú ý. Tôi đã sửa lại câu trả lời. Hy vọng điều này sẽ giúp một ai đó. Chúc mừng.
Chinmay

1

Tôi đã giải quyết vấn đề này trên ubuntu 12.04 bằng các bước sau:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) Tôi đã gỡ bỏ mongo và sau đó cài đặt lại
4) Dịch vụ sudo mongodb khởi động lại

và Tất cả là Tốt

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.