mongodb 로컬 서버를 시작할 수 없습니다


167

mongodb를 처음 사용합니다.. mongodb 로컬 서버를 mongod명령으로 실행하려고 시도 하면 실행에 실패 하고이 오류가 발생했습니다.

/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이 표시됩니다.


나는 같은 문제
Eddie

답변:


176

시험:

sudo service mongod stop
sudo mongod

현재 활성 mongodb 서비스를 중지하여 새 서비스를 시작할 수 있도록


1
나는 또한 서비스 메시지를 받았지만 그것을 무시하고 "sudo mongod"로 다시 시작해보고 마지막으로 작동 한 후
kpierce8

2
이것이 mongodb가 아니어야합니까 (mongodb가 아님)? 를 기반으로 docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/...
자비

5
sudo service mongodb stop우분투 14.10에서 나를 위해 일했습니다.
Joe Corneli

1
OS X에는 서비스 명령이 없습니다 brew services. homebrew를 통해 mongo를 설치 한 경우을 사용할 수 있습니다 . ( unix.stackexchange.com/questions/155715/… 를 통해 )
Charlie Stanard

1
@HarshaMV`Brew 서비스 중지 <formula>`
Jacob

149

그것이 원인이 같은 -9 신호를 사용하여 프로세스를 종료하지 마십시오 손상 : http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

사용 sudo killall -15 mongod하는 대신


2
이것은 원래 질문에 대한 답변이 아닙니다.
Beau Grantham

8
killall mongod같은 일을합니다. 는 기본적으로 SIGTERM 신호를 보내도록 -15지시 killall합니다.
T Blank

4
실제로 killall을 수행하면 실제로 서비스를 중지하려고하는 대신 나를 위해 일했습니다. 따라서 질문에 대답하지 않더라도. 유용했습니다
André Pena

59

안드레아스 정 :

"6 월 25 일 토요일 09:38:51 [initandlisten] listen () : bind () 실패 errno : 98 소켓에 이미 사용중인 주소 : 0.0.0.0:27017

자기 말하기입니다.

mongod의 다른 인스턴스가 이미 실행 중이며 MongoDB 기본 포트 인 27017을 할당 중입니다.

다른 프로세스를 종료하거나 다른 포트를 사용하십시오. "

이 경우 다음 명령을 입력하십시오

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 인스턴스에 대해 kill 명령을 입력하십시오 (이 경우 31936).

kill 31936

29

6 월 25 일 토요일 09:38:51 [initandlisten] listen () : bind () 실패 errno : 98 소켓에 이미 사용중인 주소 : 0.0.0.0:27017

자기 말하기입니다.

mongod의 다른 인스턴스가 이미 실행 중이며 MongoDB 기본 포트 인 27017을 할당 중입니다.

다른 프로세스를 종료하거나 다른 포트를 사용하십시오.


47
시작 페이지에서 이것을 발견했습니다 ... ** mongodb ** 적성을 통해 설치 되면 이미 실행 중입니다 (따라서 예제에서는 시작할 필요 가 없습니다 ). 그리고 나서 다음과 같이 입력하십시오 : $
mongo

@ Sakti : 예, 이미 저를 위해 실행 중입니다! 나는 적성을 통해했다고 생각합니다. 고마워!
sk8terboi87 ツ

29

mongodb 포트를 실행중인 프로세스를 netstat에서 찾으십시오 (27017).

명령:

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

1
No matching processes belonging to you were found
retrovertigo

그렇다면 mongod는 프로세스가 실행되어서는 안됩니다. 아마 주소가 다른 프로세스에서 사용하고
존 Ottenlips

7

현재 실행중인 프로세스를 찾을 수 없거나 종료해도 작동하지 않으면 다른 포트를 사용해보십시오. 예를 들어, 기본값이 27017이므로 27018을 시도하십시오.

mongod  --port 27018

나는 명령으로 이것을 발견했다. mongod --help


7

대신 사용을 제안합니다.

$sudo service mongodb stop

작동 할 수 있습니다.


6

killall -15 mongod / killall mongod 시도 후에도 작동하지 않으면 다음 명령을 입력하여 db 스토리지 폴더를 제거하십시오. sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. 활동 모니터 , mongod를 찾아서 교차시킵니다. 그리고 다시 mongod를 실행하십시오. 문제 해결됨.


OP는 OS를 지정하지 않지만 로그 파일은 Linux를 명확하게 나타냅니다.
Nic Nilov 2016 년

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

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 (다음에 db의 경로가 와야 함)


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

이 두 파일 제거 mongod.lockstorage.bson폴더 아래에 "D를 : \ MongoDB를 \ 데이터를".

그런 다음 net start MongoDB관리자 권한을 사용하여 cmd를 입력하면 문제가 해결됩니다.


0

그것은 listen () 오류를 보여줍니다 : bind () failed errno : 98 소켓에 이미 사용중인 주소 : 0.0.0.0:27017 즉, 27017 주소는 이미 다른 서비스에서 사용되고 있습니다. "netstat -apt | grep"27017 ""명령으로이를 확인하십시오.


0

(리눅스를 사용하는 경우)

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

또는

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

문제를 해결하지 못했습니다 . 로그 아웃하고 다시 로그인하십시오 . 그게 내 문제를 해결했다.

또는 터미널에서 수동으로 프로세스를 종료 할 수 있습니다.


0

LC_ALL 환경 설정이 누락 된 경우 로그에 동일한 오류가 표시되는 것 같습니다. 혼란 스럽지만 mongo문제가 있음을 알기 위해 클라이언트를 실행할 수 있습니다 .


0

몽고를 처음 실행하는 경우 경로를 먼저 설정하고 싶을 수 있습니다.

mongod --dbpath <path to the directory>

0

죽이는 과정으로 문제가 해결되지 않았습니다. 내 Mac 이 충돌하고 다시 시작하면 mongo dbPath에 일부 잠금 파일 (mongod.lock, WiredTiger.lock)이있었습니다. 이 파일을 다른 폴더로 옮긴 다음 (더 많은 문제를 피하기 위해 삭제하지 않았습니다) 효과가있었습니다. 성공한 스타에서 이동 한 잠금 파일을 삭제했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.