MongoDBは初めてです。 Windows 7ホストのVMであるUbuntu 13.0 LTSにMongoDb 3.0をインストールしようとしています。 MongoDBを正常にインストールしました(パッケージなど)が、コマンドSudo service mongod start
を実行すると、「/ var/log/mongodb/mongod.log」ログファイルに次のエラーが記録されます。誰でもこのエラーを理解するのに役立ちますか?これに関連するインターネット上のものは何もありません。
2015-04-23T00:12:00.876-0400 Iコントロール*****サーバーが再起動されました***** 2015-04-23T00:12:00.931-0400 Eネットワーク[initandlisten]ソケットのリンク解除に失敗しましたファイル/tmp/mongodb-27017.sock errno:1操作は許可されていません2015-04-23T00:12:00.931-0400 I-[initandlisten] Fatal Assertion 28578 2015-04-23T00:12:00.931-0400 I- [initandlisten]
mongodb-27017.sock
ファイルを削除して、この問題を自分で修正しました。このファイルを削除してからサービスを実行しましたが、うまくいきました。ただし、問題の根本原因はまだわかりません。コマンドls - lat /tmp/mongodb-27017.sock
の出力は現在
srwx------ 1 mongodb nogroup 0 Apr 23 06:24 /tmp/mongodb-27017.sock
KurioZ7が提供する回答の代わりに、現在のユーザーに.sockファイルのアクセス許可を設定するだけです。
Sudo chown `whoami` /tmp/mongodb-27017.sock
Sudoを使用せずにmongodを実行したい場合、これは私にとってのトリックです。 KurioZ7sの回答のようにファイルを削除すると、次回マシンを再起動したときに同じエラーが表示されます。
この問題は、コマンドを使用するときに発生します
mongod
コマンドを使用する前に
Sudo service mongod start
問題を修正するには、次のいずれかを実行します。
ファイルに適切な許可を設定します。
/tmp/mongodb-27017.sock
OR
ファイルを削除する
/tmp/mongodb-27017.sock
走る
Sudo service mongod start && mongod
これの最も可能性の高い原因は、mongodプロセスがrootユーザーによって開始されたという点です。したがって、ソケットファイル(/tmp/mongodb-27017.sock)はrootユーザーが所有していました。通常、mongodプロセスは専用のユーザーの下で実行され、そのユーザーにはそのファイルを削除する権限がありません。
解決策は、すでにわかっているように、削除することでした。その後、mongodbは正しい許可でそれを再作成することができました。これは、mongodbがinitスクリプトを使用して開始されている限り、または正しいユーザーアカウントで再起動後も持続するはずです。
$ Sudo mongod
それは私のために問題を解決します
UNIXベースのオペレーティングシステムの場合、Bastronautが提供する回答の代わりに、mongodが完全なユーザー権限を持っているフォルダーに保存する.sockファイルを指定することもできます(mongodの実行方法に対応)。 mongodはシャットダウン時に.sockファイルを削除することもできます。 .sockファイルが保存されるデフォルトのフォルダーは「/ tmp」です。別のフォルダーを指定するには、カスタムmongodb構成ファイル(たとえば、「mongodb.conf」)を使用して、以下を追加します。
net:
unixDomainSocket:
pathPrefix: "anotherFolder"
その後、次のコマンドでmongodを実行できます。
$ mongod --config /path/to/mongodb.conf
次のドキュメントを読むことができます。 https://docs.mongodb.org/manual/reference/configuration-options/#net.unixDomainSocket.pathPrefix