Saya menggunakan mac baru saya untuk pertama kalinya hari ini. Saya mengikuti panduan memulai di mongodb.org hingga langkah di mana kita membuat direktori / data / db. btw, saya menggunakan rute homebrew.
Jadi saya membuka terminal, dan saya pikir saya pada apa yang Anda sebut Home Directory, karena ketika saya melakukan "ls", saya melihat folder Aplikasi Desktop Film Musik Gambar Dokumen dan Perpustakaan.
Jadi saya melakukan
mkdir -p /data/db
pertama, katanya izin ditolak. Saya terus mencoba berbagai hal selama setengah jam dan akhirnya:
mkdir -p data/db
bekerja. dan ketika saya "ls", direktori data dan bersarang di dalamnya folder db memang ada.
kemudian saya jalankan mongod dan mengeluh tentang tidak menemukan data / db
Apakah saya melakukan sesuatu yang salah?
Sekarang saya sudah melakukan
sudo mkdir -p /data/db
dan ketika saya melakukan "ls" saya memang melihat data dir dan dir db. di dalam dir db, sama sekali tidak ada di dalamnya dan ketika sekarang saya menjalankan mongod
Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit:
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now
EDIT Mendapatkan pesan kesalahan untuk
sudo chown mongod:mongod /data/db
chown: mongod: Invalid argument
Terimakasih semuanya!
grep mongo /etc/passwd /etc/group
. Jika itu tidak berhasil, periksa namanya dengan memeriksa pemilik direktorils -ld /var/lib/mongo
. Atau untuk melihat uid / gid melakukan ini:ls -lnd /var/lib/mongo
. Dalam kasus sayadrwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...
- ini berarti menggunakan 487: 480 sebagai paramJawaban:
Anda membuat direktori di tempat yang salah
/ data / db berarti secara langsung di bawah direktori root '/', sedangkan Anda membuat 'data / db' (tanpa awalan /) mungkin hanya di dalam direktori lain, seperti direktori home '/ root'.
Anda perlu membuat direktori ini sebagai root
Anda harus menggunakan
sudo
, misalnyasudo mkdir -p /data/db
Atau yang perlu Anda lakukan
su -
untuk menjadi superuser, lalu buat direktori denganmkdir -p /data/db
catatan:
MongoDB juga memiliki opsi di mana Anda dapat membuat direktori data di lokasi lain, tetapi itu umumnya bukan ide yang baik, karena itu hanya sedikit mempersulit hal-hal seperti pemulihan DB, karena Anda selalu harus menentukan jalur db secara manual. Saya tidak akan merekomendasikan melakukan itu.
Edit:
pesan kesalahan yang Anda dapatkan adalah "Tidak dapat membuat / membuka file kunci: /data/db/mongod.lock errno: 13 Izin ditolak" . Direktori yang Anda buat tampaknya tidak memiliki izin dan kepemilikan yang benar - itu harus dapat ditulis oleh pengguna yang menjalankan proses MongoDB.
Untuk melihat izin dan kepemilikan direktori '/ data / db /', lakukan ini: (seperti inilah tampilan perizinan dan kepemilikan)
Sisi kiri 'drwxr-xr-x' menunjukkan izin untuk Pengguna, Grup, dan Lainnya. 'mongod mongod' menunjukkan siapa yang memiliki direktori, dan grup yang termasuk dalam direktori tersebut. Keduanya disebut 'mongod' dalam hal ini.
Jika direktori '/ data / db' Anda tidak memiliki izin dan kepemilikan di atas, lakukan ini :
Pertama, periksa apa yang dimiliki pengguna dan grup yang dimiliki oleh pengguna mongo Anda:
Anda harus memiliki entri untuk mongod di / etc / passwd, karena ini adalah daemon.
Anda juga dapat menggunakan nama pengguna dan nama grup, sebagai berikut: (mereka dapat ditemukan di / etc / passwd dan / etc / group)
yang seharusnya membuatnya bekerja ..
Dalam komentar di bawah, beberapa orang menggunakan ini:
atau
Kerugiannya adalah $ USER adalah akun yang memiliki shell login. Daemon idealnya tidak memiliki shell untuk alasan keamanan, itu sebabnya Anda melihat / bin / false dalam grep file password di atas.
Periksa di sini untuk lebih memahami arti izin direktori:
http://www.perlfect.com/articles/chmod.shtml
Mungkin juga lihat salah satu tutorial yang dapat Anda temukan melalui Google: "UNIX untuk pemula"
sumber
ls -ld /data/
danls -ld /data/db/
.. Anda akan melihat izin direktori yang tercantum di sebelah kiri, kemudian kepemilikan, lalu nama direktori. Anda harus memastikan bahwa direktori dapat ditulis oleh user-id yang menjalankan MongoDB.invalid arguement
sudo touch /data/db/mongod.lock
dansudo chmod 0777 /data/db/mongd.lock
. Dia mulai dari awal.sudo chown -R `id -u` /data/db
atausudo chown -R $USER /data/db
bukannyasudo chown mongod:mongod /data/db
melakukan trik untuk sayaSetelah mendapatkan kesalahan yang sama dengan Nik
Saya menemukan ini tampaknya terjadi dari penggunaan jenis tanda kutip yang salah (seharusnya backquotes ) Forum Ubuntu
Sebaliknya saya hanya menggunakan
sebagai alternatif dan sekarang mongod memiliki izin yang dibutuhkannya.
sumber
Ini berfungsi untuk saya, ditemukan dalam komentar:
sumber
Buat folder.
Beri diri Anda izin ke folder itu.
Maka Anda dapat berlari
mongod
tanpasudo
. Bekerja pada OSX Yosemitesumber
bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
Untuk memperbaiki kesalahan itu pada OS X, saya memulai kembali dan menghentikan layanan:
$ brew services restart mongodb $ brew services stop mongodb
Lalu saya berlari
mongod --config /usr/local/etc/mongod.conf
, dan masalahnya hilang.Kesalahan tampaknya muncul setelah memutakhirkan paket homebrew mongodb.
sumber
Menginstal melalui brew di Mac tempat YOUR_USER_NAME dan staf adalah grup
sumber
/etc/passwd
untuk nama pengguna - grup ini kemungkinan identik. Biasanya salah satumongo
ataumongodb
.Jika Anda menjalankan mongo tanpa argumen, diasumsikan Anda menjalankan mesin produksi sehingga menggunakan lokasi default.
untuk menggunakan database Anda sendiri (dev atau hanya yang berbeda):
sumber
Saya punya masalah dengan pengaturan Mongodb yang ada. Saya masih tidak yakin mengapa itu terjadi, tetapi untuk beberapa alasan proses Mongod tidak dapat menemukan file mongod.config. Karena tidak dapat menemukan file konfigurasi, ia mencoba mencari file DB di / data / db, folder yang tidak ada. Namun, file konfigurasi masih tersedia sehingga saya memastikan proses memiliki izin ke file konfigurasi dan menjalankan proses mongod dengan flag --config sebagai berikut:
Dalam file konfigurasi itu sendiri saya memiliki pengaturan ini:
Dan ini adalah bagaimana prosesnya dapat menemukan folder DB nyata lagi.
sumber
aku melakukannya
pada 2018-02-01 dan itu memberi saya
mongodb
versi 3.6.2.Diminta oleh jawaban dari orluke di atas, saya mencoba saja
dan semuanya muncul dalam kehidupan.
mongoose.createConnection()
Panggilan saya melakukan apa yang saya inginkan. The GUI MongoDB Kompas , versi masyarakat, akan terhubung. Saya menggunakan Kompas untuk melihatlocal.startup_log
koleksi. Itu memiliki satu dokumen, log saya baru saja memulai layanan mongoDB, dan itudan memang ada file seperti itu:
dan ada
/usr/local/var/mongodb
direktori dengan banyak file yang tidak jelas. Jadi sepertinya itu cara kerjanya sekarang.Saya tidak yakin apakah
brew services restart
mengatur layanan untuk berjalan saat login. Jadi saya lakukandan berharap itu mulai lagi setelah reboot. Dan memang benar. Bahkan, sekarang, saya pikir hal yang benar untuk dilakukan setelah instalasi awal adalah
dan itu akan memulai layanan dan restart setelah reboot.
sumber
Perintah Anda akan membuat struktur direktori di folder saat ini, bukan direktori root komputer Anda (yang merupakan apa yang hilang
/
).Perintah pertama benar, tetapi karena Anda mencoba membuat folder
/
, yang merupakan direktori terproteksi, Anda harus membuatnya dengan awalansudo
, yang merupakan kependekan dari "superuser do". Anda kemudian akan diminta kata sandi.Jadi perintah lengkapnya adalah:
sumber
Anda perlu membuat / data / db ... itu adalah direktori bernama / data / di root Anda (yaitu / ) dan subfolder di sana disebut / db / ...
Anda mendapatkan kesalahan izin karena Anda perlu menggunakan sudo untuk membuat direcotry di dir root di MacOS, sudo memungkinkan Anda menjalankan perintah sebagai administrator.
Jadi, jalankan ini sebagai gantinya ...
Ini akan meminta Anda untuk kata sandi, kata sandi yang sama yang Anda gunakan untuk mengubah pengaturan sistem (dialog kecil yang terbuka ketika Anda mencoba dan mengubah hal-hal dalam Preferensi Sistem untuk ecample), dan kemungkinan sama dengan yang Anda gunakan untuk masuk.
sumber
Anda mencoba membuat direktori yang tidak memiliki akses root.
Untuk menguji mongodb, saya hanya menggunakan direktori dari direktori pengguna saya seperti:
Ini akan membuat database mongo di temp / dari direktori kerja Anda saat ini
sumber
Saya mengatasi masalah yang sama persis dengan membuat folder / data / db dengan window manager saya. Saya mencoba melakukannya melalui terminal pada awalnya, dan untuk membuat folder di direktori root, saya harus menggunakan sudo.
Saya baru saja pergi ke direktori root menggunakan Finder dan membuat folder baru menggunakan 'Folder Baru'. Benar-benar bekerja untuk saya.
Catatan: Saya menggunakan OSX.
sumber
Hanya catatan singkat:
Jika Anda mencoba menjalankan mongod tanpa mengubah izin terlebih dahulu, Anda mungkin akan memiliki file mongod.lock (dan beberapa file lainnya) di direktori / data / db. Bahkan setelah Anda mengubah izin untuk direktori / data / db untuk memberikan akses ke $ USER Anda, Anda akan terus mendapatkan "Tidak dapat membuat / membuka file kunci: /data/db/mongod.lock errno: 13 Izin ditolak "kesalahan. Jalankan ls -al / data / db dan Anda mungkin akan melihat bahwa izin untuk masing-masing file masih disetel ke root untuk pengguna, bukan ke $ USER Anda. Anda harus menghapus file mongod.lock, dan yang lainnya juga. Kemudian ketika Anda menjalankan mongod lagi, semuanya akan berfungsi, dan Anda dapat memverifikasi bahwa izin file cocok dengan izin direktori dengan menjalankan ls -al lagi.
sumber
Buat direktori di Root
Sekarang ganti Pemilik
Kamu baik untuk pergi!
alih-alih menggunakan
sudo mongod
, Anda tidak perlu memasukkan kata sandi setiap kali, tetapi untuk proyek sebenarnya yang harus Anda gunakansudo mongod
, jangan berikan izin kepada pengguna normal!sumber
Saya terus mendapatkan kesalahan berikut ketika saya mencoba memulai mongodb.
Saya menggunakan perintah berikut:
Perbaikan untuk saya adalah bahwa saya tidak memerlukan tanda "=" dan ini menyebabkan kesalahan. Jadi saya lakukan
Hanya ingin membuang ini di luar sana karena kesalahan sama sekali tidak menentukan bahwa ini adalah masalahnya. Saya hampir menghapus isi direktori ~ / mongo-data untuk melihat apakah itu membantu. Senang saya ingat bahwa cli args terkadang tidak menggunakan tanda "=".
sumber
Sampai tanggal ini saya juga berpikir bahwa kita perlu membuat folder / data / db untuk memulai perintah mongod.
Tetapi baru-baru ini saya mencoba memulai mongod dengan perintah layanan dan itu berhasil untuk saya dan tidak perlu membuat direktori / data / db.
Untuk memeriksa status mongod, Anda dapat menjalankan perintah berikut.
sumber
Solusi ini memecahkan masalah saya
Jadikan direktori sebagai
sudo mkdir -p / data / db
Itu akan membuat direktori bernama db dan daripada mencoba memulai dengan perintah
sudo mongod
Jika Anda mendapatkan kesalahan atau masalah lain dengan memulai mongod, Anda mungkin menemukan masalah sebagai
dan temukan mongod menjalankan port dan matikan prosesnya. Cara lain adalah dengan membuat port spesifik ketika memulai mongod sebagai
sumber
Ketik "id" pada terminal untuk melihat id pengguna yang tersedia yang dapat Anda berikan, Kemudian cukup ketik
"sudo chown -R idname / data / db"
Ini berhasil bagi saya! Semoga ini bisa menyelesaikan masalah Anda.
sumber
Dalam versi MongoDB yang lebih mutakhir, saya memiliki 3.2.10, disimpan sebagai default
/var/lib/mongodb
sumber
mongod --dbpath /var/lib/mongodb
membantu dalam situasi seperti iniSetelah (kembali) menginstal paket alat, saya mendapat kesalahan serupa pada perangkat Windows 10;
Solusi Analog seperti yang dijelaskan untuk sistem linux: cukup membuat folder sudah cukup untuk dapat memulai
mongod.exe
(server mongoDB).Kupikir aku mungkin meninggalkannya untuk orang-orang yang berakhir di sini dengan istilah pencarian yang sama pada perangkat Windows.
sumber
Saya hanya ingin menunjukkan di sini bahwa jika Anda mencoba ini dan Anda mengalami
mkdir: /data/db: Read-only file system
, silakan lihat komentar ini, yang membantu saya: https://stackoverflow.com/a/58895373 .Dengan begitu jika ada yang ada di jawaban ini dan melakukan Kontrol F untuk "hanya membaca" mereka akan melihat ini
sumber
Ada cara yang sangat bodoh untuk menciptakan masalah ini, yang telah saya rintis:
1) biarkan mongo Anda instal untuk sementara waktu 2) kembali dan server tidak berjalan 3) cobalah untuk memulainya, tetapi jangan gunakan sudo kali ini 4) mongo tidak dapat menemukan data / db / karena sekarang sedang mencari di dir home user, bukan su home dir
Ya, itu benar-benar bodoh tetapi jika sudah lama sejak Anda berada di sistem itu bisa membuat Anda tersandung.
Jawaban singkat: pastikan Anda menjalankan mongo dengan direktori home tersirat yang sama
sumber