서버 127.0.0.1 shell / mongo.js에 연결할 수 없습니다.


88

내 우분투에서 mongodb를 설정할 때 시도합니다. ./mongo이 오류가 표시됩니다.

 couldn't connect to server 127.0.0.1 shell/mongo.js

그래서 내가 무엇을 할 수 있니 ,

감사


어떻게 설치 했습니까? 적성을 사용 했습니까? tarbal을 직접 다운로드 했습니까?
Bryan Migliorisi 2011

1
우분투에 내가 실행되지 않았기 때문에이 오류가 있었다 그것은이었다 mongod첫째
코너 거머리를

답변:


124
  • 잠금 파일을 수동으로 제거하십시오. sudo rm /var/lib/mongodb/mongod.lock
  • 복구 스크립트를 실행합니다. sudo -u mongodb mongod -f /etc/mongodb.conf --repair

다음 사항에 유의하십시오.

  • mongodb 사용자로이 명령을 실행해야합니다. root로 실행하면 root는 mongodb 데몬을 실행하는 데 필요한 / var / lib / mongodb /에있는 파일을 소유하므로 나중에 mongodb 사용자로 데몬을 실행하려고하면 시작할 권한이 없습니다. . 이 경우 다음 오류가 표시됩니다. 잠금 파일 경로 : /var/lib/mongodb/mongod.lock에 대한 잠금 파일을 생성 / 열 수 없습니다. errno : 13 Permission denied, terminating.
  • Ubuntu에서는 -f 플래그를 사용하여 구성 파일 /etc/mongodb.conf를 지정해야합니다. 그렇지 않으면 잘못된 위치에서 데이터 파일을 찾고 다음 오류가 표시됩니다. dbpath (/ data / db /)가 존재하지 않아 종료됩니다.

훌륭한 링크. 문제를 정확하게 해결했습니다.
jaketrent

1
답은 지금 위에 있습니다.
fady 모하메드 오스만

2
mongodb 사용자로 실행하는 방법?
user4951

mongodb 그룹에 자신을 추가하기 만하면됩니다. useradd -G mongodb fady fady를 사용자 이름으로 바꿉니다.
fady mohamed osman

2
이 답변의 정보와 @boulder_ruby의 답변을 모두 사용해야했습니다. 내 '/ data / db /'가 누락 되었기 때문입니다. 이 답변이 더 완전 해지려면 좋은 업데이트가 될 수 있습니다.
Fabricio Buzeto 2013 년

32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

때때로 이러한 작업을 수행 한 후 mongo를 시작하는 데 약간의 시간이 걸립니다.


내가`sudo -u mongodb mongod -f /etc/mongodb.conf --repair`를 시도하면 여기에 내가 얻는 것이 있습니다.Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus

21

$ mongod 실행 시도

다음과 같은 오류가 발생하면

MongoDB shell version: 2.0.5
connecting to: test
Fri Jun  1 11:20:33 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed

hisham-agil:~ hisham$ mongod
mongod --help for help and startup options
Fri Jun  1 11:24:47 [initandlisten] MongoDB starting : pid=53452 port=27017 dbpath=/data/db/ 64-bit host=hisham-agil.local
Fri Jun  1 11:24:47 [initandlisten] db version v2.0.5, pdfile version 4.5
Fri Jun  1 11:24:47 [initandlisten] git version: nogitversion
Fri Jun  1 11:24:47 [initandlisten] build info: Darwin gamma.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:48:32 PST 2012; root:xnu-1699.24.23~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
Fri Jun  1 11:24:47 [initandlisten] options: {}
Fri Jun  1 11:24:47 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Fri Jun  1 11:24:47 dbexit: 
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close listening sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to flush diaglog...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: waiting for fs preallocator...
Fri Jun  1 11:24:47 [initandlisten] shutdown: lock for final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: closing all files...
Fri Jun  1 11:24:47 [initandlisten] closeAllFiles() finished
Fri Jun  1 11:24:47 dbexit: really exiting now

그런 다음 매우 일반적인 기본 시작 오류가 발생했습니다.

기본적으로 mongod는 데이터베이스 파일에 / data / db를 사용하려고 시도합니다.이 경우 존재하지 않는 파일입니다.

시작할 수 없습니다

mongo 

당신이 처리 할 때까지

mongod.

해당 디렉토리를 생성하고 mongod 프로세스를 실행하는 동일한 사용자가 쓸 수 있는지 확인하십시오.

** 비슷한 질문을 참조하십시오 . "오류 : 서버 127.0.0.1 shell / mongo.js에 연결할 수 없습니다"및 Mac OSX Lion에서 mongodb를 실행하려고 할 때 오류 발생


mongod --dbpath ../data : 당신은 또한 지금처럼 DBPATH를 설정할 수 있습니다
cbaigorri

20

이것은 실제로 오류가 아닙니다. 여기서 일어나는 일은 Mongo 가 로컬 데이터베이스 서버를 실행하기 위해 데몬 에 의존한다는 것입니다. 따라서 쉘에서 mongo 서버 를 "실행" 하려면 mongo 서비스 를 시작해야 합니다. 먼저.

들어 페도라 리눅스 (이다 느릅 나무 배포판 I 사용) 당신은이 명령을 실행해야합니다 :

1 sudo service mongod start
2 mongo

그리고 거기에 있습니다! 서버가 실행됩니다. 이제 시스템이 부팅 될 때 Mongo 서비스를 시작하려면 다음을 실행해야합니다.

sudo chkconfig --levels 235 mongod on

그리고 그게 전부입니다! 그렇게한다면 이제 쉘 에서 서버를 시작하기 위해 mongo 를 입력해야 하지만 그게 다야 , 문제는 먼저 SERVICE를 시작한 다음 SERVER를 시작해야한다는 것입니다. :)

추신 : 내가 게시 한 명령은 페도라뿐만 아니라 다른 리눅스 배포판에서도 작동 할 수 있습니다 ... 사용중인 배포판에 따라 일부 단어조정할 필요가없는 경우 ;)


동일한 솔루션이 질문에 적용됩니다. stackoverflow.com/questions/7958228/…
Jmlevick

그래서 내가 몇 번 난처한 상황에 빠진 긴 시간 동안 내 머리를 긁어, 그리고 마지막으로 실현 얻을은 '오, 난 그냥 sudo를해야한다. "
벤 저자

2
그리고 Debian / Ubuntu 변형의 경우 : sudo service mongodb start
ljs.dev

11

mongo를 설치하려고 할 때 동일한 문제가 발생했습니다. 오류가 발생했습니다.

오류

"Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84"

해결책:

먼저 다음을 사용하여 mongod를 설치하십시오.

sudo apt-get install mongodb-server

그런 다음 입력

mongod --dbpath /mongo/db

그때

sudo rm /var/lib/mongodb/mongod.lock

그때

sudo -u mongodb mongod -f /etc/mongodb.conf  --repair

감사합니다


이 방법은 mongo의 기존 데이터베이스를 삭제합니까?
에반

6

당신은 잠금 파일 삭제해야 mongod.lock하거나 /var/lib/mongodb/mongod.lock다음 실행해야 우분투를 mongod.exe하거나 service mongodb start우분투 먼저, 다음 실행에 mongo.exe또는 mongo우분투.


OP는 Ubuntu에 있으므로 .exe파일을 사용하지 않을 것이라고 확신 합니다.
me_and

이 오류 메시지가 표시되고 파일 시스템에서 "mongod.lock"을 찾을 수 없습니다. 이 지침이 Mac OSX에 적용됩니까?
boulder_ruby

5

mongod가 실행되고 있지 않거나 ( "ps"명령을 사용하여 확인) 로컬 호스트가 아닌 외부 IP 주소에서 수신 대기 중입니다. 따라서 먼저 'mongod'가 실행 중인지 프로세스 목록을 확인하십시오. 그렇다면 "netstat -nap"에서 관련 포트를 확인하십시오.

물론 콘솔에서 mongod를 수동으로 시작하거나 mongod 로그 파일을 볼 수도 있습니다 (구성된 경우 mongod를 설치 한 방법에 따라).


5

먼저 / var / lib / mongodb / 폴더 (또는 dbpath가 가리키는 폴더)의 모든 파일과 디렉토리가 mongodb 사용자 및 mongodb 그룹에 속하는지 확인해야합니다.

cd /var/lib/mongodb/
sudo chown mongodb filename.*
sudo chgrp mongodb filename.*
sudo chown -R mongodb directory
sudo chgrp -R mongodb directory

(파일 이름과 디렉토리를 각각의 이름으로 바꿉니다)

그런 다음 다른 사람들이 이미 언급했듯이 잠금을 제거하고 데이터베이스를 복구하고 데몬을 다시 시작할 수 있습니다.

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

이것에 대한 찬성표가없는 이유는 무엇입니까? 이것은 내가 본 여섯 개의 SO 항목 중에서 나를 위해 일한 유일한 솔루션이었습니다. 감사합니다.
FRD

구성 파일로 시작하고 강제로 복구하는 명령은 sudo -u mongodb mongod -f /etc/mongod.conf --repairUbuntu 14에 있습니다.
okoboko 2014-06-15

5

먼저 mongo 서버를 시작하십시오.

Users-MacBook-Pro:csv1 Admin$ mongod
all output going to: /usr/local/var/log/mongodb/mongo.log

그런 다음 다른 터미널 창을 열고 셸을 엽니 다.

Users-MacBook-Pro:csv1 Admin$ mongo

2

또한 루트 파티션에 mongod를 시작하기에 충분한 공간이 있는지 확인하십시오.

df -h /

mongod 시작시 다음과 같은 smth가 표시됩니다.

Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 12 17:02:59.159 dbexit: 
Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...

1

Ubuntu에서 다음을 시도하십시오.

sudo invoke-rc.d mongodb start

1

$ PATH와 권한 문제의 조합 일 수 있습니다.

아래 단계를 따르십시오.

MongoDB bin 파일을 가리 키도록 $ PATH 변수를 업데이트합니다. 제 경우에는 MongoDB를 다음 폴더에 설치하십시오.

/usr/local/Cellar/mongodb/2.4.6/

$ PATH 변수를 업데이트하려면 다음을 수행하십시오.

$ sudo vi /etc/paths

그런 다음 'i'를 눌러 Vi에 텍스트를 삽입하고 MongoDB 경로를 'paths'파일 끝에 추가하고 터미널을 다시 시작하십시오.

/usr/local/Cellar/mongodb/2.4.6/bin

'Esc : w q'를 사용하여 저장하고 Vi 편집기를 종료합니다.

echo를 사용하여 경로 변수를 표시하십시오.

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin

이제 Mongo 버전을 확인하십시오. 팔로우하면 올바른 길을 가고있는 것입니다!

$ mongo --version
MongoDB shell version: 2.4.6

이제 데이터베이스 디렉터리를 만들어야합니다. MongoDB 문서에서 제안한 기본 '/ data / db'위치를 사용했습니다. Mongo가 로그를 생성하는 동안 권한 문제를 방지하기 위해 로그 디렉토리도 생성했습니다. 소유권을 변경하면 작업이 수행됩니다.

$ sudo mkdir /data/db
$ sudo mkdir /data/log
$ whoami
username
$ chown -R username /data

이제 'mongod'명령을 처음 실행할 때 제공 할 MongoDB의 기본 구성 파일을 생성합니다. 이제 'mongod'가 들어오는 데이터 연결을 수신하는 서비스를 시작한다는 점도 지적하고 싶습니다. 이것은 '$ service mysqld start'를 실행 한 것과 비슷합니다. 계속해서 config 파일을 생성하겠습니다. 매우 기본적인 구성 파일을 만들었습니다. 그러나 MongoDB를 구성하기 위해 다른 많은 변수를 추가 할 수 있습니다. MongoDB로 플레이하는 것은 이번이 처음이므로 MongoDB 문서에서 읽은 것만 큼 알고 있습니다! 'mongodb.conf'를 만들었습니다.

$ sudo vi /etc/mongodb.conf

다음을 추가하십시오.

fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true

MongoDB 서버의 기본 포트는 27017입니다. 단계 – 5에서 생성 한 dbpath 및 logpath에 대해 고유 한 경로를 사용하십시오. conf 파일을 닫고 저장하는 것을 잊지 마십시오.

이제 MongoDB 서비스를 시작할 준비가되었습니다. 두 개의 터미널 인스턴스를 열고 터미널 1에 다음을 입력합니다.

$ sudo mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3516
all output going to: /data/log/mongod.log
child process started successfully, parent exiting

위의 메시지가 표시되면 Mongod 서비스를 성공적으로 시작한 것입니다.

이제 연결하려면 터미널 2에서 다음을 입력하십시오.

$mongo test
MongoDB shell version: 2.4.6
connecting to: test
Server has startup warnings:
Tue Sep 3 16:55:43.527 [initandlisten]
Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>

경고를 무시하지만 '테스트'데이터베이스에 성공적으로 연결되었습니다! 멋있는!

그게 다야. Mac에 처음으로 MongoDB 사본을 설치하려고 할 때이 솔루션을 적용했습니다. 이것이 당신에게도 도움이되는지 확인하십시오.

자세한 게시물은 http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 에서 확인할 수 있습니다 .

도움이 되었기를 바랍니다.

건배, Chinmay


이 링크가 질문에 답할 수 있지만 여기에 답변의 필수 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 무효화 될 수 있습니다.
Radim Köhler 2014

@ RadimKöhler, 고마워요. 나는 답을 정정했다. 이것이 누군가를 도울 수 있기를 바랍니다. 건배.
Chinmay 2014

1

우분투 12.04에서이 문제를 다음 단계에 따라 해결했습니다.
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) mongo를 제거한 다음 다시 설치했습니다.
4) sudo service mongodb restart

그리고 모든 것은 잘

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