tidak dapat terhubung ke server 127.0.0.1 shell / mongo.js

88

ketika saya mengatur mongodb di ubuntu saya, saya mencoba: ./mongo itu menunjukkan kesalahan ini:

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

Jadi apa yang bisa kulakukan ,

Terima kasih

zjm1126
sumber
Bagaimana Anda menginstalnya? Apakah Anda menggunakan bakat? Apakah Anda mengunduh tarbal secara langsung?
Bryan Migliorisi
1
saya mengalami kesalahan ini dan itu karena di ubuntu saya tidak berjalan mongodterlebih dahulu
Connor Leech

Jawaban:

124
  • Hapus lockfile secara manual: sudo rm /var/lib/mongodb/mongod.lock
  • Jalankan skrip perbaikan: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Harap perhatikan hal-hal berikut:

  • Anda harus menjalankan perintah ini sebagai pengguna mongodb. Jika Anda menjalankannya sebagai root, maka root akan memiliki file di / var / lib / mongodb / yang diperlukan untuk menjalankan daemon mongodb dan oleh karena itu ketika daemon bekerja nanti sebagai pengguna mongodb, ia tidak akan memiliki izin untuk memulai . Dalam hal ini Anda akan mendapatkan kesalahan ini: Tidak dapat membuat / membuka file kunci untuk lockfilepath: /var/lib/mongodb/mongod.lock errno: 13 Izin ditolak, diakhiri.
  • Di Ubuntu, Anda harus menentukan file konfigurasi /etc/mongodb.conf menggunakan tanda -f. Jika tidak, ia akan mencari file data di tempat yang salah dan Anda akan melihat kesalahan berikut: dbpath (/ data / db /) tidak ada, berhenti.
fady mohamed osman
sumber
Tautan bagus. Memecahkan masalah dengan tepat.
jaketrent
2
bagaimana cara menjalankannya sebagai pengguna mongodb?
pengguna4951
Cukup tambahkan diri Anda ke grup mongodb: useradd -G mongodb fady ganti fady dengan nama pengguna Anda.
fady mohamed osman
Saya menjalankan perbaikan berkali-kali tetapi tidak berhasil sampai saya secara manual menghapus file .lock (seperti yang Anda sebutkan), sekarang berfungsi, tetapi saya hanya ingin tahu mengapa menghapus file .lock secara manual?
Shahzeb Khan
2
Saya harus menggunakan informasi dari jawaban ini dan dari jawaban @boulder_ruby. Ini karena '/ data / db /' saya hilang. Mungkin bisa jadi update yang bagus untuk jawaban ini agar lebih lengkap.
Fabricio Buzeto
32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

Ini semua, terkadang, perlu sedikit waktu untuk memulai mongo setelah melakukan operasi ini.

Rubyrider
sumber
Jika saya mencoba `sudo -u mongodb mongod -f /etc/mongodb.conf --repair`, inilah yang saya dapatkan:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus
21

Mencoba menjalankan $ mongod

Jika Anda mendapatkan kesalahan en seperti

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

Kemudian Anda mengalami kesalahan startup dasar yang cukup umum.

Secara default mongod akan mencoba menggunakan / data / db untuk file database-nya, yang dalam hal ini, tidak ada.

Anda tidak bisa memulai

mongo 

sampai Anda menangani

mongod.

Coba buat direktori tersebut dan pastikan dapat ditulis oleh pengguna yang sama yang menjalankan proses mongod.

** Lihat pertanyaan serupa-- Mendapat kesalahan, "Kesalahan: tidak dapat terhubung ke server 127.0.0.1 shell / mongo.js" & saat mencoba menjalankan mongodb di mac osx lion

boulder_ruby
sumber
Anda juga dapat mengatur dbpath seperti ini: mongod --dbpath ../data
cbaigorri
20

Ini sebenarnya bukan kesalahan ... Yang terjadi di sini adalah Mongo mengandalkan daemon untuk menjalankan server database lokal, jadi untuk "menjalankan" server mongo di shell Anda, Anda harus menjalankan layanan mongo pertama.

Untuk Fedora Linux (Distro yang saya gunakan) Anda harus menjalankan perintah ini:

1 sudo service mongod start
2 mongo

Dan begitulah! server akan berjalan. Sekarang, Jika Anda ingin layanan Mongo Mulai ketika sistem melakukan boot, maka Anda harus menjalankan:

sudo chkconfig --levels 235 mongod on

Dan itu saja! Jika Anda melakukan itu, sekarang di shell Anda hanya perlu mengetik mongo untuk memulai server tetapi itu cukup banyak, masalahnya adalah Anda harus memulai SERVICE terlebih dahulu dan kemudian SERVER :)

PS Perintah yang saya posting mungkin berfungsi di distro linux lain juga, tidak hanya di fedora ... Jika tidak mungkin Anda harus mengubah beberapa kata tergantung pada distro yang Anda gunakan;)

Jmlevick
sumber
Solusi yang sama berlaku untuk pertanyaan: stackoverflow.com/questions/7958228/…
Jmlevick
Seringkali saya bingung dan menggaruk kepala untuk waktu yang lama, dan akhirnya menyadari: 'oh, saya hanya perlu sudo. "
ben author
2
dan untuk varian Debian / Ubuntu: sudo service mongodb start
ljs.dev
11

Saya mendapat masalah yang sama ketika saya mencoba menginstal mongo. Saya mendapat Kesalahan karena,

Kesalahan

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

Larutan:

Pertama instal mongod dengan menggunakan:

sudo apt-get install mongodb-server

Lalu ketik

mongod --dbpath /mongo/db

Kemudian

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

Kemudian

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

Terima kasih

Samarth P Shenoy
sumber
Akankah metode ini menghapus database yang ada di mongo?
Evan
6

Anda perlu menghapus lockfile mongod.lockatau /var/lib/mongodb/mongod.lockdi ubuntu, lalu Anda harus menjalankan mongod.exeatau service mongodb startdi ubuntu terlebih dahulu, lalu jalankan mongo.exeatau mongodi ubuntu.

pengguna1391225
sumber
OP ada di Ubuntu, jadi saya cukup yakin mereka tidak akan menggunakan .exefile apa pun .
saya_dan
Saya mendapatkan pesan kesalahan ini, dan saya tidak dapat menemukan "mongod.lock" di sistem file saya. Apakah instruksi ini berlaku untuk Mac OSX?
boulder_ruby
5

Entah mongod Anda tidak berjalan (periksa menggunakan perintah "ps") atau sedang mendengarkan di beberapa alamat IP luar dan bukan di localhost. Jadi periksa dulu daftar proses jika 'mongod' sedang berjalan. Jika ya, periksa dengan "netstat -nap" untuk port terkait.

Tentu saja Anda dapat memulai mongod di konsol secara manual atau bahkan melihat ke file log mongod (jika ada yang dikonfigurasi ... tergantung bagaimana Anda menginstal mongod).

Andreas Jung
sumber
5

Pertama, Anda harus memastikan bahwa semua file dan direktori di folder / var / lib / mongodb / (atau folder mana pun yang dbpath tunjuk) milik pengguna mongodb dan grup mongodb.

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

(Ganti nama file dan direktori dengan nama masing-masing)

Kemudian Anda dapat menghapus kunci, memperbaiki database, dan memulai ulang daemon seperti yang telah disebutkan orang lain:

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start
Tom Desair
sumber
Kenapa tidak ada suara positif untuk ini? Ini adalah satu-satunya solusi, di antara setengah lusin entri SO yang saya lihat, yang berhasil untuk saya. Terima kasih Pak.
FRD
Perintah untuk memulai dengan file konfigurasi dan memaksa perbaikan ada sudo -u mongodb mongod -f /etc/mongod.conf --repairdi Ubuntu 14.
okoboko
5

Pertama mulai server mongo Anda dengan

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

Kemudian buka jendela terminal lain dan buka shell

Users-MacBook-Pro:csv1 Admin$ mongo
Tarun Gupta
sumber
2

Periksa juga apakah partisi root Anda memiliki cukup ruang untuk memulai mongod.

df -h /

Anda akan melihat sesuatu seperti ini pada peluncuran 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...
DmitrySandalov
sumber
1

Di Ubuntu, coba ini:

sudo invoke-rc.d mongodb start
Pemenang
sumber
1

Ini bisa jadi kombinasi dari $ PATH dan masalah Izin.

Coba langkah-langkah berikut yang diberikan di bawah ini:

Perbarui variabel $ PATH Anda agar mengarah ke file bin MongoDB Anda. Dalam kasus saya, instal MongoDB ke folder ini:

/usr/local/Cellar/mongodb/2.4.6/

Untuk memperbarui variabel $ PATH Anda, lakukan hal berikut:

$ sudo vi /etc/paths

Kemudian, tekan 'i' untuk memasukkan teks ke dalam Vi dan tambahkan jalur MongoDB Anda ke akhir file 'jalur' dan mulai ulang terminal.

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

Gunakan 'Esc: w q' untuk menyimpan dan keluar dari editor Vi.

Gunakan echo untuk menampilkan variabel jalur Anda:

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

Sekarang coba periksa versi Mongo, jika Anda mengikuti, maka Anda berada di jalur yang benar!

$ mongo --version
MongoDB shell version: 2.4.6

Sekarang kita perlu membuat direktori database. Saya menggunakan lokasi '/ data / db' default yang disarankan dalam dokumen MongoDB. Saya juga membuat direktori log untuk menghindari masalah izin saat Mongo mencoba membuat log apa pun. Ubah kepemilikan dan itu akan berhasil.

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

Sekarang, kita akan membuat file konfigurasi default untuk MongoDB yang akan disediakan saat pertama kali kita menjalankan perintah 'mongod'. Sekarang, saya juga ingin menunjukkan bahwa 'mongod' akan memulai layanan, yang akan mendengarkan koneksi data yang masuk. Ini serupa dengan menjalankan '$ service mysqld start'. Mari kita lanjutkan dan buat file konfigurasi. Harap diingat bahwa saya telah membuat file konfigurasi yang sangat dasar. Namun, Anda dapat menambahkan banyak variabel lain untuk mengonfigurasi MongoDB. Ini pertama kalinya saya bermain dengan MongoDB, jadi saya hanya tahu sebanyak yang saya baca di dokumen MongoDB! Saya membuat 'mongodb.conf'.

$ sudo vi /etc/mongodb.conf

Tambahkan yang berikut:

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

Harap dicatat bahwa port default untuk server MongoDB adalah 27017. Gunakan jalur Anda sendiri untuk dbpath dan logpath yang Anda buat pada Langkah - 5. Jangan lupa untuk menutup dan menyimpan file conf.

Sekarang kita siap untuk memulai layanan MongoDB kita. Buka dua contoh Terminal. Di Terminal 1, ketik:

$ 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

Jika Anda mendapatkan pesan di atas, ketahuilah bahwa Anda telah berhasil memulai layanan Mongod Anda.

Sekarang, untuk menghubungkannya, di Terminal 2 ketik berikut ini:

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

Abaikan peringatan, tetapi Anda berhasil terhubung ke database 'test'! Keren!

Itu saja. Saya menerapkan solusi ini, ketika saya mencoba menginstal salinan MongoDB di Mac saya untuk pertama kalinya. Lihat apakah ini membantu Anda juga.

Untuk posting rinci Anda dapat pergi di sini - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 .

Saya harap ini membantu!

Cheers, Chinmay

Chinmay
sumber
Meskipun tautan ini mungkin menjawab pertanyaan, lebih baik menyertakan bagian penting dari jawaban di sini dan menyediakan tautan untuk referensi. Jawaban link saja bisa menjadi tidak valid jika halaman tertaut berubah.
Radim Köhler
@ RadimKöhler, terima kasih atas perhatiannya. Saya telah mengoreksi jawabannya. Semoga ini bisa membantu seseorang. Bersulang.
Chinmay
1

Saya memecahkan masalah ini di ubuntu 12.04 dengan mengikuti langkah-langkah berikut:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) Saya menghapus mongo dan kemudian menginstalnya lagi
4) sudo service mongodb restart

dan Semuanya Baik-baik saja

Almas
sumber