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.
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.
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 111:20:33Error: 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.
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;)
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.
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).
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.
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
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 1217:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 1217:02:59.159 [initandlisten]
Mon Aug 1217:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 1217:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 1217:02:59.159 [initandlisten]
Mon Aug 1217:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 1217:02:59.159 dbexit:
Mon Aug 1217:02:59.159 [initandlisten] shutdown: going to close listening sockets...
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.
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'.
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 316:55:43.527 [initandlisten]
Tue Sep 316:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Numberof 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.
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
mongod
terlebih dahuluJawaban:
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
Harap perhatikan hal-hal berikut:
sumber
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.
sumber
Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
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
sampai Anda menangani
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
sumber
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;)
sumber
sudo service mongodb start
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:
Lalu ketik
Kemudian
sudo rm /var/lib/mongodb/mongod.lock
Kemudian
Terima kasih
sumber
Anda perlu menghapus lockfile
mongod.lock
atau/var/lib/mongodb/mongod.lock
di ubuntu, lalu Anda harus menjalankanmongod.exe
atauservice mongodb start
di ubuntu terlebih dahulu, lalu jalankanmongo.exe
ataumongo
di ubuntu.sumber
.exe
file apa pun .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).
sumber
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
sumber
sudo -u mongodb mongod -f /etc/mongod.conf --repair
di Ubuntu 14.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
sumber
Periksa juga apakah partisi root Anda memiliki cukup ruang untuk memulai mongod.
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...
sumber
Di Ubuntu, coba ini:
sumber
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:
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.
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'.
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
sumber
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
sumber