mongodをサービスとして起動するのに問題があります:sudo mongod -f /etc/mongod.confを実行するとどのように機能するのですか?sudo service mongod startで起動すると、ログにエラーが表示されます
>
sudo
コマンドはmongod
を開始します root
を使用 権限(別名スーパーユーザーアクセス)。 mongod
を実行する場合 サービスとして、ユーザーとグループはサービス定義(mongodb
)で構成されます あなたの例では両方のために)。
mongod
を実行する必要はありません root
として処理します ユーザーであり、最小特権の原則の一般的なセキュリティ慣行に従って、これは強くお勧めしません。
コマンドラインから構成をテストする場合は、sudo
を使用できます。 デフォルト(root)ユーザーではなく、指定されたユーザーで実行します。
例:
sudo -u mongodb mongod -f /etc/mongod.conf
一般に、mongod
を実行するのではなく、サービス構成を使用するのが最善です。 手動で。手動で呼び出す場合は、構成ファイルのパスなどのパラメーターを含めることも忘れないでください(デフォルトの構成パスがないため)。構成ファイルがない場合、mongod
dbPath
などのデフォルトオプションも使用します /data/db
の 。
アサーション:28595:13:アクセスが拒否されましたsrc / mongo / db / storage / wiredtiger / wiredtiger_kv_engine.cpp 267
パーミッションエラーの考えられる原因は、以前にmongod
を開始したことです。 root
として ユーザー。一部のディレクトリとファイルはrootユーザーが所有する可能性があるため、mongodb
ユーザーはそれらにアクセスできません。特定のエラーは、データディレクトリ(つまり、構成されたstorage.dbPath
)内のファイルへのアクセスに関連しています。 mongod.conf
で 。
mongod.conf
のデフォルトパスを変更していないと仮定します ファイルの場合、mongod.service
に一致するように権限を再帰的に調整できる必要があります 定義が期待します。
まず、mongod
を停止したことを確認します 現在実行中の場合はインスタンス。
次に、予想されるユーザーとグループへのアクセス許可を再帰的に調整します。
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
これで、mongod
を起動できるようになります。 サービスとして。サービスの開始に失敗した場合は、mongod
に詳細が記載されているはずです。 ログファイル(ログファイルがmongodb
によって書き込み可能であると仮定します サービスユーザー)。