Mongodは/ data / dbフォルダーがないと不平を言っています


475

今日、初めて新しいMacを使用しています。私は、mongodb.orgのスタートガイドに従って、/ data / dbディレクトリを作成するまで続けています。ところで、私は自作のルートを使いました。

ターミナルを開くと、ホームディレクトリと呼ばれる場所にいると思います。「ls」を実行すると、デスクトップアプリケーションの映画、音楽、画像、ドキュメント、およびライブラリのフォルダが表示されます。

だから私はやった

mkdir -p /data/db

まず、許可が拒否されたと表示されます。私は30分と最後にさまざまなことを試み続け、最後に

mkdir -p data/db

働いた。そして、私が「ls」すると、データのディレクトリとその中にネストされたdbフォルダが存在します。

その後、mongodを起動すると、data / dbが見つからないというメッセージが表示されます

私は何か間違ったことをした?

今私はやった

sudo mkdir -p /data/db

「ls」を実行すると、データディレクトリとデータベースディレクトリが表示されます。しかし、db dirの中には絶対に何もありません。今度はmongodを実行します。

Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit: 
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now

編集エラーメッセージを取得する

sudo chown mongod:mongod /data/db

chown: mongod: Invalid argument

みんな、ありがとう!


1
「無効な引数」とは、mongoユーザーのシンボリック名がシステム上で異なることを意味します。MongoDBのインストールに別のパッケージまたはインストールメカニズムを使用している可能性があります。/ etc / passwdおよび/ etc / groupファイルで、mongoユーザーのシンボル名(またはuid / gid)を確認してくださいgrep mongo /etc/passwd /etc/group。それが機能しない場合は、ディレクトリの所有者を確認して名前を確認しls -ld /var/lib/mongoます。または、uid / gidを確認するには、次のようにしls -lnd /var/lib/mongoます。私の場合、drwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...これは487:480を
パラメーター

UID / GIDの使用は、シンボリック名の使用と同義です。例えば単に「のmongodを置き換える:あなたはメソッド...上記で見つかったuid / gidの数字とのmongod
は、Tilo

このディレクトリ(data / db)を適切に追加する方法を理解したので、なぜ最初にこのディレクトリがインストールに含まれていなかったのですか?
winux

あなただけのMacOS 10.15にアップグレードした場合、この回答のかもしれないのヘルプ:stackoverflow.com/questions/58283257/...
アダムZerner

MACの最後のバージョンを使用している場合:新しいmacOS Catalinaアップデートでは、「/ data / db」フォルダーは読み取り専用になり、変更できません。次の手順に従って、別のフォルダにDBを作成します。1)mongodディレクトリを変更します。sudomongod --dbpath / System / Volumes / Data / data / db 2)エイリアスを指定します。aliasmongod = "sudo mongod --dbpath / System / Volumes / Data / data / db "
Farbod Aprin

回答:


636

間違った場所にディレクトリを作成した

/ data / dbは、 '/'ルートディレクトリの直下にあることを意味しますが、 'data / db'(先頭の/なし)は、おそらく '/ root'ホームディレクトリなどの別のディレクトリ内に作成したことになります。

このディレクトリをルートとして作成する必要があります

を使用する必要があるかsudo、例えばsudo mkdir -p /data/db

またはsu -、スーパーユーザーになるために行う必要があり、次にディレクトリを作成しますmkdir -p /data/db


注意:

MongoDBには、データディレクトリを別の場所に作成できるオプションもありますが、常に手動でdb-pathを指定する必要があるため、DBリカバリなどが少し複雑になるため、一般的にはお勧めできません。そうすることはお勧めしません。


編集:

表示されるエラーメッセージは、「ロックファイルを作成/開くことができません:/data/db/mongod.lock errno:13 Permission denied」です。作成したディレクトリには正しい権限と所有権がないようです。MongoDBプロセスを実行するユーザーが書き込み可能である必要があります。

「/ data / db /」ディレクトリのパーミッションと所有権を確認するには、次のようにします(これは、パーミッションと所有権がどのようになるかです)。

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

左側の「drwxr-xr-x」には、ユーザー、グループ、およびその他の権限が表示されます。「mongod mongod」は、ディレクトリの所有者と、そのディレクトリが属するグループを示します。この場合、どちらも「mongod」と呼ばれます。

「/ data / db」ディレクトリに上記の権限と所有権がない場合は、次のようにします

まず、mongoユーザーが持っているユーザーとグループを確認します。

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

デーモンなので、/ etc / passwdにmongodのエントリがあるはずです。

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

次のように、ユーザー名とグループ名を使用することもできます(これらは/ etc / passwdと/ etc / groupにあります)。

sudo chown -R mongod:mongod /data/db 

それでうまくいくはずです。

以下のコメントでは、一部の人々はこれを使用しました:

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

または

sudo chown -R $USER /data/db 
sudo chmod -R go+w /data/db

欠点は、$ USERがログインシェルを持つアカウントであることです。セキュリティ上の理由から、デーモンにはシェルが理想的ではありません。そのため、上記のパスワードファイルのgrepに/ bin / falseが表示されます。

ここをチェックして、ディレクトリ許可の意味をよりよく理解してください。

http://www.perlfect.com/articles/chmod.shtml

また、Googleで見つけることができるチュートリアルの1つ、「初心者のためのUNIX」もご覧ください。


2
実行しようとするls -ld /data/ls -ld /data/db/、左側にディレクトリのアクセス権が表示され、次に所有権が表示され、次にディレクトリ名が表示されます。MongoDBを実行するユーザーIDによってディレクトリが書き込み可能であることを確認する必要があります。

2
@Tiloはい、私はそれらをやった。1つ目はchmodで問題がなく、2つ目が「chown:mongod:Invalid argument」と表示されている
Nik So

3
これはスレッド全体です。まさに私が経験していることです。しかし、私はmongoのユーザーIDとグループIDが私のシステムに何を持っているのかを理解できず、どこにもドキュメントがありません。そのが返すとのmongod一部:私はchownコマンドのmongodにこだわっているinvalid arguement
トリップ

10
更新私は一緒に行ったsudo touch /data/db/mongod.locksudo chmod 0777 /data/db/mongd.lock。彼女はすぐに始めました。
トリップ

141
実行しているsudo chown -R `id -u` /data/dbsudo chown -R $USER /data/dbの代わりに、sudo chown mongod:mongod /data/db私のためのトリックでした
heitortsergentを

117

Nikと同じエラーが発生した後

chown:id -u:無効な引数

これは明らかに間違ったタイプの引用符(バッククォートである必要があります)を使用したことが原因であることがわかりましたUbuntuフォーラム

代わりに、私はちょうど使用しました

sudo chown $ USER / data / db

代替として、今ではmongodは必要な権限を持っています。


4
誰かが便利だと思った場合:私は同じ問題を抱えていましたが、エラーメッセージは少し異なりました(chown mongod:mongodを試したときにグループ 'mongod'が存在しないと言っていました)->ただし、chown $ USERを使用すると私、ありがとう...
trainoasis 2014年

6
これに-Rを追加する必要がありました。「sudo chown -R $ USER / data / db」
Kevin

1
初心者向けの完璧な回答
Pyae Sone

90

これは私にとってはうまくいき、コメントで見つかります:

sudo chown -R $USER /data/db

2
私にとっても。OSXにhomebrewを介してmongoをインストールしても、mongodのユーザーとグループは追加されません。
Zauker

73

フォルダを作成します。

sudo mkdir -p /data/db/

フォルダへのアクセス許可を自分に付与します。

sudo chown `id -u` /data/db

その後、mongodなしで実行できますsudo。OSXヨセミテで動作


1
新しいディレクトリを作成する代わりに、mongodサービスを再起動してみてください。例:-service mongod restart
Devendra Bhat

bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
よだれかけ

32

OS Xでそのエラーを修正するために、サービスを再起動して停止しました。 $ brew services restart mongodb $ brew services stop mongodb

それから私は走りましたmongod --config /usr/local/etc/mongod.conf、そして、問題は消えました。

エラーは、mongodb homebrewパッケージをアップグレードした後に発生したようです。


23

YOUR_USER_NAMEとスタッフがグループであるMacでbrewを使用してインストールする

sudo mkdir -p /data/db
sudo chmod +x+r+w /data/db/
sudo touch /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db
sudo chmod +x+r+w /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock

@MarkusWMahlbergありがとうございます。変に感じたがうまくいったものの一つだ。では、誰がそのファイルの所有者およびグループになるのでしょうか。
Gal Bracha 14

それはあなたのディストリビューションに依存します。/etc/passwdユーザー名を確認してください。グループは同じである可能性があります。これは通常のいずれかですmongomongodb
Markus W Mahlberg、2014

@MarkusWMahlberg ok-修正しました-brewを使用してインストールする場合、ユーザーとグループは作成されないため、自分のユーザー名に設定します。より安全かどうかを確認してください。ありがとう
Gal Bracha 14

ありがとう。MacでBrewを使用して開発する場合、これにより問題が修正されます。mongodbでテストデータを使用しているだけであれば、セキュリティを強化する必要はありません。OS Xの@MarkusWMahlbergでは、単に「mongod&」で開始すると、mongodを実行しているユーザーはYOUR_USER_NAMEになります。
gaspard 2015

22

引数なしでmongoを実行すると、本番マシンで実行されていると想定されるため、デフォルトの場所が使用されます。

独自のデータベースを使用する場合(devまたは単なる別のデータベース):

./bin/mongod --dbpath ~/data/db

これは、/ etc / mongod.confで宣言された設定を使用しない理由を説明していますか?ubuntu 16.04での3.6.5のインストールに問題がありました。
Dark Star1

詳細(-v)モードで開始するか、構成(--config)を明示的に強制し ます。docs.mongodb.com / manual / reference / program /mongod apt-getを使用してインストールする場合は、サービスmongod status / startで開始します/ stop
loreii

私はモンゴのログを調べました。/ data / dbディレクトリの欠如が起動を妨げていると言い続けていました。結局あなたの答えに出くわしました、そしてそれが問題の理由であると思われますか?
Dark Star1

これは、WindowsのLinuxサブシステムでMongoDBを使用する場合にも機能します。fsルートで実際に/ data / dbを作成することはできません。
hiergiltdiestfu

8

既存のMongodbセットアップでこの問題が発生しました。なぜそうなったのかはまだわかりませんが、何らかの理由でMongodプロセスがmongod.configファイルを見つけられませんでした。構成ファイルが見つからなかったため、/ data / dbにあるDBファイルを見つけようとしましたが、存在しないフォルダーでした。ただし、構成ファイルはまだ利用可能だったので、プロセスに構成ファイルへのアクセス許可があることを確認し、次のように--configフラグを指定してmongodプロセスを実行します。

mongod --config /etc/mongod.conf

設定ファイル自体に次の設定がありました:

storage:
  dbPath: /var/lib/mongodb

そして、これがプロセスが実際のDBフォルダーを再び見つける方法です。


1
私はそれが私に起こったことを確認します。設定ファイルの代わりに、単に--dbpath = / var / lib / mongodbを設定できます。私はすべてのデータを失いましたが、それはまだそこにあります。
lenhhoxung

8

やった

brew install mongodb

2018-02-01と私はmongodbバージョン3.6.2 を与えた。

上記のorlukeから答えに促され、私はちょうど試してみました

$ brew services restart mongodb

そしてすべてが人生に飛び込んだ。私のmongoose.createConnection()電話は私が望んだことをしました。GUI MongoDBのコンパス、コミュニティ版は、接続します。私はコンパスを使ってlocal.startup_logコレクションを見ました。これには1つのドキュメントがあり、mongoDBサービスを開始したばかりの私のログには、

cmdLine:Object
    config:"/usr/local/etc/mongod.conf"

そして確かにそのようなファイルがありました:

$ more /usr/local/etc/mongod.conf
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1

そして/usr/local/var/mongodb、多くのあいまいなファイルを含むディレクトリがありました。これで、インストールは現在どのように機能しているように見えます。

brew services restartログイン時にサービスを実行するように設定しているかどうかはわかりません。だから私はやった

brew services stop mongodb
brew services start mongodb

そして、それが再起動後にそれを再び開始することを望んだ。そして、確かにそうなった。実際、今、私は最初のインストール後に行うべき正しいことは

brew services start mongodb

これでサービスが開始され、再起動後にサービスが再起動されます。



7

コマンドにより、コンピューターのルートディレクトリ(欠落して/いるもの)ではなく、現在のフォルダーにディレクトリ構造が作成されます。

最初のコマンドは正しかっ/たが、保護されたディレクトリであるにフォルダを作成しようとしているsudoため、「superuser do」の略であるをプレフィックスとして付ける必要があります。次に、パスワードの入力を求められます。

したがって、完全なコマンドは次のようになります。

$ sudo mkdir -p /data/db

6

/ data / db ... を作成する必要があります。これは、ルート(つまり/)に/ data /と呼ばれるディレクトリで、そこに/ db / ... と呼ばれるサブフォルダを作成します。

MacOSのルートディレクトリにディレクトリを作成するためにsudoを使用する必要があるため、権限エラーが発生します。sudoを使用すると、管理者としてコマンドを実行できます。

だから、代わりにこれを実行してください...

$ sudo mkdir -p /data/db

これにより、パスワードの入力を求められます。これは、システム設定を変更するために使用するパスワード(ecampleのシステム環境設定で変更しようとすると開く小さなダイアログ)と同じであり、ログインに使用するパスワードと同じである可能性があります。


6

rootアクセス権のないディレクトリを作成しようとしています。

mongodbをテストするには、次のようにユーザーディレクトリのディレクトリを使用します。

cd
mkdir -p temp/
mongod --dbpath .

これにより、現在の作業ディレクトリからtemp /にmongoデータベースが作成されます


6

ウィンドウマネージャーを使用して/ data / dbフォルダーを作成することで、まったく同じ問題を解決しました。最初はターミナルでやってみましたが、ルートディレクトリにフォルダを作成するためにsudoを使わなければなりませんでした。

Finderを使用してルートディレクトリに移動し、「新しいフォルダ」を使用して新しいフォルダを作成しました。完全に私のために働きました。

注:私はOSXを使用しています。


5

簡単なメモ:

最初にアクセス許可を変更せずにmongodを実行しようとすると、/ data / dbディレクトリにmongod.lockファイル(およびその他のファイル)がある可能性があります。/ data / dbディレクトリの権限を変更して$ USERへのアクセス権を付与した後でも、「ロックファイルを作成/開くことができません:/data/db/mongod.lock errno:13権限が拒否されました"エラー。ls -al / data / dbを実行すると、おそらく、個々のファイルの権限が$ USERではなく、ユーザーのrootに設定されていることがわかります。mongod.lockファイルとその他のファイルも削除する必要があります。その後、mongodを再度実行すると、すべてが機能するはずです。ファイルのアクセス権がディレクトリのアクセス権と一致していることを、ls -alを再度実行して確認できます。


これは良いメモです。ロックファイルはありませんでしたが、データとdbフォルダーの所有者を変更する必要がありました。
Caranicas

5

ルートにディレクトリを作成する

sudo mkdir -p /data/db

所有者を変更してください

sudo chown -R $USER /data

いいよ!

mongod

を使用する代わりにsudo mongod、everythimeのパスワードを入力する必要はありませんが、実際のプロジェクトではを使用する必要があるためsudo mongod、通常のユーザーに許可を与えないでください。


4

mongodbを起動しようとすると、次のエラーが発生し続けました。

"shutting down with code:100" 

私は次のコマンドを使用していました:

./mongod --dbpath=~/mongo-data

私の修正は、「=」記号を必要としないことで、これがエラーの原因でした。だから私はやった

./mongod --dbpath ~/mongo-data

エラーがこれが問題であることを決して指定していないため、これをそこに捨てたかっただけです。〜/ mongo-dataディレクトリの内容をほぼ削除して、それが役に立ったかどうかを確認しました。嬉しいことに、cli argsが「=」記号を使用しない場合があることを思い出しました。


3

この日までは、mongodコマンドを開始するために/ data / dbフォルダーを作成する必要があるとも思っていました。

しかし、最近私はserviceコマンドでmongodを起動しようとしましたが、それは私にとってはうまくいき、/ data / dbディレクトリを作成する必要はありませんでした。

service mongod start

mongodのステータスを確認するには、次のコマンドを実行します。

service mongod status

3

この解決策は私の問題を解決します

  1. 次のディレクトリを作成します

    sudo mkdir -p / data / db

  2. それはdbという名前のディレクトリを作成し、コマンドで開始しようとします

    須藤門

mongodの起動で別のエラーまたは問題が発生した場合、次のように問題を見つける可能性があります

リスナーのセットアップに失敗しました:SocketException:アドレスはすでに使用されています。

ps ax | grep mongod
sudo kill ps_number

そして、mongod実行ポートを見つけ、プロセスを終了します。別の方法は、mongodを次のように起動するときに特定のポートを作成することです

sudo mongod --port 27018

2

端末で「id」と入力して、指定できる利用可能なユーザーIDを確認し、次に単純に入力します

「sudo chown -R idname / data / db」

これは私にとってうまくいきました!これで問題が解決することを願っています。


2

MongoDBのより新しいバージョンでは、3.2.10があり、デフォルトで次の場所に格納されています。

/var/lib/mongodb


1
走るmongod --dbpath /var/lib/mongodbことはこのような状況で役立ちます
サンティアゴアリスティ

1

ツールパッケージを(再)インストールした後、Windows 10デバイスで同様のエラーが発生しました。

initAndListenの例外:NonExistentPath:データディレクトリC:\ data \ db \が見つかりません。終了しています

解決策 Linuxシステムで説明したのと同様mongod.exeです。(mongoDBサーバー)を起動するには、フォルダーを作成するだけで十分です。

Windowsデバイスで同じ検索語句がここに表示される人のために残しておくかもしれません。


1

これを試してに遭遇した場合はmkdir: /data/db: Read-only file system、このコメントを参照してください:https : //stackoverflow.com/a/58895373

そうすれば、誰かがこの回答にいて、コントロールFを「読み取り専用」で実行すると、これが表示されます


0

私が開拓してきたこの問題を作成するための本当に馬鹿げた方法があります:

1)しばらくの間、mongoのインストールを終了します2)戻ってサーバーが実行されていません3)起動を試みますが、今回はsudoを使用しないでください4)mongoはdata / db /を見つけることができませんsu home dirではなく、ユーザーhome dir

はい、それは本当にばかげていますが、システムに接続してからしばらく経つと、つまずく可能性があります。

短い答え:同じ暗黙のホームディレクトリでmongoを実行していることを確認してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.