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によって書き込み可能であると仮定します サービスユーザー)。