Tôi đang gặp sự cố khi khởi chạy mongod như một dịch vụ:Có thể nó hoạt động như thế nào khi tôi thực hiện sudo mongod -f /etc/mongod.conf nhưng khi khởi chạy nó với dịch vụ sudo mongod start, tôi gặp lỗi trong nhật ký
sudo
lệnh bắt đầu mongod
với root
quyền (hay còn gọi là quyền truy cập siêu người dùng). Nếu bạn chạy mongod
như một dịch vụ, người dùng và nhóm được định cấu hình trong định nghĩa dịch vụ (mongodb
cho cả hai trong ví dụ của bạn).
Không cần chạy mongod
xử lý dưới dạng root
người dùng và điều này thực sự không được khuyến khích theo thông lệ bảo mật phổ biến của Nguyên tắc ít đặc quyền nhất.
Nếu bạn muốn kiểm tra cấu hình từ dòng lệnh, bạn có thể sử dụng sudo
để chạy với một người dùng được chỉ định thay vì người dùng (gốc) mặc định.
Ví dụ:
sudo -u mongodb mongod -f /etc/mongod.conf
Nói chung, tốt nhất là sử dụng cấu hình dịch vụ thay vì chạy mongod
thủ công. Với lệnh gọi thủ công, bạn cũng sẽ phải nhớ bao gồm các tham số như đường dẫn tệp cấu hình (vì không có đường dẫn cấu hình mặc định). Không có tệp cấu hình, mongod
cũng sử dụng các tùy chọn mặc định như dbPath
trong tổng số /data/db
.
Khẳng định:28595:13:Quyền bị từ chối src / mongo / db / storage / wiredtiger / wiredtiger_kv_engine.cpp 267
Nguyên nhân có thể gây ra lỗi quyền của bạn là đã khởi động mongod
trước đó làm root
người dùng. Một số thư mục và tệp hiện có thể thuộc sở hữu của người dùng root, vì vậy mongodb
người dùng không thể truy cập những. Lỗi cụ thể của bạn liên quan đến việc truy cập các tệp trong thư mục dữ liệu (tức là storage.dbPath
đã định cấu hình trong mongod.conf
).
Giả sử bạn chưa thay đổi các đường dẫn mặc định trong mongod.conf
của mình , bạn sẽ có thể điều chỉnh đệ quy các quyền để phù hợp với những gì mongod.service
định nghĩa mong đợi.
Trước tiên, hãy đảm bảo rằng bạn đã dừng mongod
của mình ví dụ nếu nó hiện đang chạy.
Sau đó, điều chỉnh đệ quy quyền cho người dùng và nhóm dự kiến:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Bây giờ bạn có thể bắt đầu mongod
như một dịch vụ. Nếu dịch vụ không khởi động được, cần có thêm chi tiết trong mongod
tệp nhật ký (giả sử tệp nhật ký có thể ghi được bởi mongodb
người sử dụng dịch vụ).