mongodbローカルサーバーを起動できません


167

私はmongodbの初心者です。mongodコマンドでmongodbローカルサーバーを実行しようとすると、実行に失敗し、このエラーがスローされました。

/usr/lib/mongodb/mongod --help for help and startup options
Sat Jun 25 09:38:51 MongoDB starting : pid=1782 port=27017 dbpath=/data/db/ 32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sat Jun 25 09:38:51 db version v1.6.3, pdfile version 4.5
Sat Jun 25 09:38:51 git version: nogitversion
Sat Jun 25 09:38:51 sys info: Linux vernadsky 2.6.24-27-server #1 SMP Fri Mar 12 01:45:06 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jun 25 09:38:51 [initandlisten] *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
Sat Jun 25 09:38:51 [initandlisten] waiting for connections on port 27017
Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sat Jun 25 09:38:51 [initandlisten]   addr already in use
Sat Jun 25 09:38:51 [initandlisten] now exiting
Sat Jun 25 09:38:51 dbexit: 

Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close listening sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to flush oplog...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: waiting for fs preallocator...
Sat Jun 25 09:38:51 [initandlisten] shutdown: closing all files...
Sat Jun 25 09:38:51     closeAllFiles() finished

Sat Jun 25 09:38:51 [initandlisten] shutdown: removing fs lock...
Sat Jun 25 09:38:51 dbexit: really exiting now

mongod.lockファイルを削除してみました...実行しmongod --repairました.. mongod.lockファイルへのアクセス許可も変更しました。

しかし、何も機能していないようです。同じエラーが繰り返し表示されます。どうすればよいですか?

gitバージョン1.7.4.1もインストールしましたが、nogitversionが誤って表示されます。


私は同じ問題を抱えていたし、このソリューションは、私のために働いstackoverflow.com/questions/5798549/...
エディ・

回答:


176

試してください:

sudo service mongod stop
sudo mongod

現在アクティブなmongodbサービスを停止して、新しいサービスを開始できるようにする


1
私もサービスメッセージを受け取りましたが、それを無視して「sudo mongod」で再起動してみることにしました。それが最終的に機能した後
kpierce8

2
これは(mongodbではなく)mongodであるべきではありませんか?docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/…に
xavier

5
sudo service mongodb stopUbuntu 14.10で私のために働いた。
Joe Corneli 2015年

1
OS Xにはサービスコマンドがありません。homebrewを使用してmongoをインストールしている場合は、を使用できますbrew services。(unix.stackexchange.com/questions/155715/…経由)
チャーリースタナード2016

1
@HarshaMV `brew services stop <formula>`
Jacob

149

損傷の原因となるため、-9シグナルを使用してプロセスを強制終了しないでください。http//www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

sudo killall -15 mongod代わりに使用


2
これは元の質問には答えません。
Beau Grantham 2012

8
killall mongod同じことも行います。は、SIGTERMシグナルを送信する-15ように指示killallします。これはデフォルトで送信されます。
Tブランク

4
実際には、サービスを停止しようとする代わりに、killallを実行することが実際に機能しました。だから、それは質問に答えませんが。それは便利だった
アンドレ・ペーニャ

59

アンドレアスユング:

「Sat Jun 25 09:38:51 [initandlisten] listen():bind()failed errno:98 Address already in use for socket:0.0.0.0:27017

自発的です。

mongodの別のインスタンスはすでに実行されており、27017であるMongoDBのデフォルトポートを割り当てています。

他のプロセスを強制終了するか、別のポートを使用してください。」

この場合、次のコマンドを入力します

ps wuax | grep mongo

あなたはこのようなものを見るはずです

User           31936   0.5 0.4 2719784 35624   ?? S     7:34pm   0:09.98 mongod
User           31945   0.0 0.0 2423368   184 s000 R+   8:24pm   0:00.00 grep mongo

次に、mongodインスタンス(この場合は31936)に対してkillコマンドを入力します。

kill 31936

29

土6月25日09:38:51 [initandlisten] listen():bind()failed errno:98アドレスはすでにソケットに使用されています:0.0.0.0:27017

自発的です。

mongodの別のインスタンスはすでに実行されており、27017であるMongoDBのデフォルトポートを割り当てています。

他のプロセスを強制終了するか、別のポートを使用してください。


47
これは、開始ページで見つかりました... ** mongodb ** aptitudeを介して インストールされている場合、すでに実行されています(したがって、この例では開始する必要ありません)。次に、次のように入力します。$ mongo ..私は個人的にmongodを開始し、クイックスタートチュートリアルを実行していたので、.. i dintはすでに実行されていることを知っていました...
sakthig

@Sakti:ええ、それはすでに私のために実行されています!私は適性を介してやったと思います。どうも!
sk8terboi87ツ

29

monstatbポート(27017)を実行しているプロセスをnetstatから確認します。

コマンド:

sudo netstat -tulpn | grep :27017

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

tcp        0      0 0.0.0.0:27017           0.0.0.0:* 
LISTEN      6432/mongod

私の場合、「6432」がpidですが、実際の場合とは異なる場合があります。次に、次のコマンドを使用してそのプロセスを強制終了します。

sudo kill <pid>

それでおしまい!


25

使用する:

sudo killall mongod

サーバーを停止します。

次に再起動mongodします:

sudo service mongod restart

うまくいくはずです。


23

すでに実行中のプロセスがあります。あなたはコマンドでそれを殺すことができます:

killall mongod

15

あなたはやりたいkillall -15 mongodことがまだ実行されているので:Address already in use for socket: 0.0.0.0:27017

その後、mongod再度実行できます。


なぜ単純ではないのですkillall mongodか?
Dmitri Zaitsev 2017年

1
No matching processes belonging to you were found
レトロバーティゴ

その場合、mongodは実行中のプロセスであってはなりません。住所が別のプロセスで使用されている可能性があります
John Ottenlips

7

現在実行中のプロセスが見つからない場合、またはそれらを強制終了しても機能しない場合は、別のポートを試してください。たとえば、デフォルトは27017であるため、27018を試してください。

mongod  --port 27018

私はこれをコマンドで見つけました、 mongod --help



6

killall -15 mongod / killall mongodのいずれかを試してください。この後もこれが機能しない場合は、次のコマンドを入力してdbストレージフォルダを削除します。sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. Activity Monitormongodを探し、それを横切ってください。その後、再びmongodを実行します。問題が解決しました。


OPはOSを指定しませんが、ログファイルは明らかにLinuxを示します。
Nic Nilov

4

ターミナルを開き、次のように入力します。

mkdir -p /data/db

次に入力します。

mongod

3

同じ問題がありましたが、mongodの新しいインスタンスを開こうとしたところ、すでに実行されているとのことでした。

私はドキュメントをチェックしました、そしてそれはタイプするように言いました

mongo
use admin
db.shutdownServer()

3

MongoDBを起動できないのは、主に不適切なシャットダウンが原因です。修正するには、mongod.lockファイルを削除します。このファイルは、データフォルダーにあります。

mongodb.confまたはmongod.confファイルを調べて、データフォルダーの場所を確認します。(Linuxシステムの/ etcにあるconfファイル。)

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

たとえば、上記の設定を使用すると、ファイルは/var/lib/mongodb/mongod.lockにあります。単にそれを削除し、mongodbを再起動します。


1
これは、特に応答がないときに「ハードリセット」されたクラウドサーバーで、何度も私に起こりました。それは簡単な修正であり、トップの答えになるはずです。
SevakPrime 2016年

2

私は同じ問題に直面しました。けれどもmongodbサービスが実行されていない、ログを示したaddress already in useメッセージを。

 $netstat -tulpn | grep :27017 

何も返さない

さらに分析すると、問題はロックファイルが原因であることが判明しました。ロックファイルを削除して再起動した後、サービスは正常に実行されています。

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

$ls /var/lib/mongodb/mongod.lock

$service mongod start

2

/var/log/mongodb/mongod.logでログを確認し、エラーを推測してみてください。私の場合は

ソケットファイル/tmp/mongodb-27017.sock errno:1のリンク解除に失敗しました操作は許可されていません

/tmp/mongodb-27017.sockを削除して動作しました。


1

試す

/usr/lib/mongodb/mongod.exe --dbpath c:data \ db

--dbpath(データベースのパスが後に続く必要があります)


1

サーバーがすでに実行されている可能性があります。コマンドmongoが機能しているかどうかで確認してください。


1

Windowsでこの問題を解決するには、以下の手順を実行します。

たとえば、mongoDBバージョン3.6がインストールされており、MongoDBのインストールパスは「D:\ Program Files \ MongoDB」です。

フォルダーD:\ mongodb \ logsを作成し、このフォルダー内にファイルmongodb.logを作成します。

管理者としてcmd.exeを実行します。

D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

これら2つのファイルmongod.lockを削除storage.bsonし、フォルダー「D:\ mongodb \ data」の下に置きます。

次にnet start MongoDB、管理者権限を使用してcmdを入力すると、問題が解決します。


0

エラーlisten():bind()が失敗しましたerrno:98アドレスはすでにソケットで使用されています:0.0.0.0:27017つまり、27017アドレスはすでに他のサービスで使用されています。「netstat -apt | grep "27017"」コマンドでこれを確認してください


0

(Linuxを使用している場合)

mongod --shutdown --config=path/to/your/configFile.conf 

または

mongod --repair --config=path/to/your/configFile.conf 

問題を修正せず、ログアウトしてから再度ログインします。それで問題は解決しました。

または、ターミナルから手動でプロセスを強制終了することもできます。


0

LC_ALL環境設定がない場合、ログに同じエラーが表示されるようです。混乱しますが、mongoクライアントを実行して問題であることを確認できます。


0

mongoを初めて実行する場合は、最初にパスを設定する必要があるかもしれません

mongod --dbpath <path to the directory>

0

殺害プロセスは私の問題を解決しませんでした。私のMACがクラッシュしていたし、再起動時にロックファイル(mongod.lock、WiredTiger.lock)の一部は、モンゴDBPATHに存在していました。これらのファイルを別のフォルダーに移動し(問題を回避するために削除しませんでした)、それが機能しました。成功したスターで、移動したロックファイルを削除しました。

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