web-dev-qa-db-ja.com

MongoDB:initAndListenの例外:20読み取り専用ディレクトリ:/ data/dbにロックファイルを作成しようとしましたが、終了しました

ルートディレクトリに/data/dbを作成し、./mongodを実行しました。

[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] now exiting
[initandlisten] shutting down with code:100
104
whinytween96

問題は、あなたが作成したディレクトリ/data/dbがrootユーザーによって所有され、書き込みのみ可能であるということですが、あなたは自分自身としてmongodを実行しています。これを解決するにはいくつかの方法がありますが、最終的には、問題のディレクトリに適切な権限を付与する必要があります。これが生産用であるならば、私はあなたがドキュメントをチェックしてこれを注意深く考えるように忠告するでしょう - あなたはおそらく特別な注意を払いたいです。

しかし、これがテストのためだけのもので、それをうまく機能させるために必要な場合は、これを試すことができます。これにより、すべてのユーザーがディレクトリに書き込み可能になります。

> Sudo chmod -R go+w /data/db

または、これはあなたが所有するディレクトリになります。

> Sudo chown -R $USER /data/db
229
Bjorn Roche

Macでは、次のことをしなければなりませんでした。

Sudo chown -R $USER /data/db
Sudo chown -R $USER /tmp/

/tmpの中にもMongoもアクセスを必要とするファイルがあったので

Rootとしてmongoを使うことができます。

$ Sudo mongod
34
Grover Lee

システムがSELinuxを使用している場合は、作成したディレクトリに対して正しいコンテキストを使用していることを確認してください。

ls -dZ /data/db/
ls -dZ /var/lib/mongo/

次のようにしてコンテキストを複製します。

chcon -R --reference=/var/lib/mongo /data/db
18
drrossum

私は同じ問題を経験しました、そして、以下の解決策はこの問題を解決しました。次の解決策を試してください。

Sudo mkdir -p/data/db
Sudo chown -R 'ユーザー名'/data/db

16
Hamdi Bayhan

あなたがあなたのmongodbログをチェックしていて、あなたがそのようなエラーを受けているなら、私がしたようにちょうどステップに従ってください。それはあなたの/data/dbディレクトリに関する許可問題のために起こります。私はubuntu16.04を使用していて、以下のように2つの簡単なコマンドを実行することで解決策を見つけます。

ステップ1: / data/dbディレクトリに権限を付与します。

Sudo chmod -R 0777 /data/db

ステップ2: / mongodサービスを次のように開始してみます。

Sudo service mongod start

ステップ3: / mongodサービスのステータスを確認します。

Sudo service mongod status
2
UpvotePlease

良い解決策ですが、どうして誰もWindowsに解決策を与えていないのでしょうか。

Windowsを使用している場合は、cmdを「管理者として実行」するだけです。

私はまったく同じ問題に直面していて、それを解決しました、そしてここにステップバイステップの説明があります:

他のすべてを試す前に、mongodbのbinディレクトリを含むmongodbディレクトリに移動し、ターミナルで単にcommandを使用してください。

Sudo bin/mongod

rootユーザーとしてmongodbを実行すると、rootユーザーとしてパスワードの入力を求められることがあります。それでもmongodbを実行できない場合は、次のようにしましょう。

まず、ターミナルに入力してmongodbのデータディレクトリのパーミッションモードを見てみましょう。

ls -ld/data

(p.s.または/ dataディレクトリを含むルートディレクトリ内のすべてのディレクトリおよびファイルのアクセス権モードを表示するには、単に「ls -l /」と入力します。)

そして、rootユーザーの許可モードは "rwx"、つまりrootユーザーがファイルの読み取り、書き込み、実行ができるようにする必要があります。これを実現するには、ターミナルに次のように入力してアクセス権モードを変更するコマンドを使用します。

chmod 755/data

これは/ dataディレクトリのパーミッションモードを "rwxr-xr-x"に設定します。つまり、rootユーザーは読み取り、書き込み、実行が可能ですが、GroupユーザーとEveryoneはそれ以外の場合は読み取りと実行のみが可能です。

注:この操作の実行が拒否された場合は、代わりに次のように入力してください。

Sudo chmod 755/data

許可をrootユーザーとして設定します。

それでは、このステップが完了したら、もう一度入力して許可モードを取り戻しましょう。 ls -ld/data

出力は次のようになります。

drwxr-xr-x 3ルートホイール102 Mar 3 17:00/data

(p.s.始めに "d"を気にする必要はありません)そして "rwxr-xr-x"設定が完了したことに気づいてください。

これですべて設定できたので、mongodbディレクトリに戻って次のように入力します。

Sudo bin/mongod

mongodbを実行します。

お役に立てれば。

2
yifan li

あなただけのスーパーユーザーとしてコマンドを実行する必要があります。

端末からタイプするだけです。Sudo su mongod

0
David Noleto