Saya mengalami masalah saat membuka mongod sebagai layanan:Bagaimana mungkin itu berfungsi ketika saya melakukan Sudo mongod -f /etc/mongod.conf tetapi ketika meluncurkannya dengan Sudo service mongod start saya mendapatkan kesalahan di log
sudo
perintah memulai mongod
dengan root
izin (alias akses pengguna super). Jika Anda menjalankan mongod
sebagai layanan, pengguna dan grup dikonfigurasi dalam definisi layanan (mongodb
untuk keduanya dalam contoh Anda).
Tidak perlu menjalankan mongod
proses sebagai root
pengguna, dan ini sangat tidak disarankan sesuai dengan praktik keamanan umum Prinsip dengan hak istimewa paling rendah.
Jika Anda ingin menguji konfigurasi dari baris perintah, Anda dapat menggunakan sudo
untuk dijalankan dengan pengguna tertentu alih-alih pengguna default (root).
Misalnya:
sudo -u mongodb mongod -f /etc/mongod.conf
Secara umum, yang terbaik adalah menggunakan konfigurasi layanan daripada menjalankan mongod
secara manual. Dengan pemanggilan manual, Anda juga harus ingat untuk menyertakan parameter seperti jalur file konfigurasi (karena tidak ada jalur konfigurasi default). Tanpa file konfigurasi, mongod
juga menggunakan opsi default seperti dbPath
dari /data/db
.
Pernyataan:28595:13:Izin ditolak src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
Kemungkinan penyebab kesalahan izin Anda adalah karena sebelumnya memulai mongod
sebagai root
pengguna. Beberapa direktori dan file sekarang mungkin dimiliki oleh pengguna root, jadi mongodb
pengguna tidak dapat mengaksesnya. Kesalahan spesifik Anda terkait dengan mengakses file di direktori data (yaitu storage.dbPath
yang dikonfigurasi di mongod.conf
).
Dengan asumsi Anda belum mengubah jalur default di mongod.conf
. Anda file, Anda harus dapat menyesuaikan izin secara rekursif agar sesuai dengan mongod.service
definisi yang diharapkan.
Pertama, pastikan Anda telah menghentikan mongod
contoh jika sedang berjalan.
Kemudian, sesuaikan izin secara rekursif ke pengguna dan grup yang diharapkan:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Sekarang Anda seharusnya dapat memulai mongod
sebagai layanan. Jika layanan gagal untuk memulai, harus ada detail lebih lanjut di mongod
file log (dengan asumsi file log dapat ditulis oleh mongodb
pengguna layanan).