MongoDB 실행 중이지만 셸을 사용하여 연결할 수 없음
CentOS 5.x Linux with MongoDB 2.0.1(메인 및 레거시 정적 테스트)
MongoDB 실행 중:
root 31664 1.5 1.4 81848 11148 ? Sl 18:40 0:00 ./mongod -f mongo.conf -vvvvv --fork
단순 셸 연결을 사용하여 서버에 연결하면 실패합니다.
[root@xxxx bin]# ./mongo
MongoDB shell version: 2.0.1
connecting to: test
Mon Oct 31 18:41:32 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed
원격 리눅스 호스트의 MongoDB 셸을 사용하는 것처럼 포트 28017의 웹 인터페이스도 정상적으로 로드됩니다. 연결할 수 . .localhost:27017은 telnet 파일입니다.이 컴퓨터에서도 SELinux가 실행되고 있지 않습니다.나는 또한 명시적으로 명시하려고 노력했습니다.localhost:2017/db
헛되이
$ ./mongo remote-ip:27017
MongoDB shell version: 2.0.1
connecting to: remote-ip:27017/test
> show dbs
local 0.03125GB
>
로그는 이 주제에 대해 완전히 무시됩니다.
.....
Mon Oct 31 18:40:34 [initandlisten] fd limit hard:1024 soft:1024 max conn: 819
Mon Oct 31 18:40:34 [initandlisten] waiting for connections on port 27017
Mon Oct 31 18:40:34 BackgroundJob starting: snapshot
Mon Oct 31 18:40:34 BackgroundJob starting: ClientCursorMonitor
Mon Oct 31 18:40:34 BackgroundJob starting: PeriodicTask::Runner
Mon Oct 31 18:40:34 [websvr] fd limit hard:1024 soft:1024 max conn: 819
Mon Oct 31 18:40:34 [websvr] admin web console waiting for connections on port 28017
mongo shell 클라이언트를 추적하면 문제가 있는 호출이 하나만 표시됩니다.
[pid 31708] connect(4, {sa_family=AF_INET, sin_port=htons(27017), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EBADF (Bad file descriptor)
파일 시스템이 깨끗하며 제한이 없습니다(테스트용 루트로 실행됨). 알 수 있습니다.mongo
가 TCP하려고 합니다.AF_INET
소켓을 에게 대신 수 ?), MongoDB와 MongoDB 사이에 있습니다.아니면 고객이 왜 EBADF를 던졌을까요?
편집: 나의 기본적인 Mongo conf:
dbpath=/root/mongodb-linux-i686-2.0.1/data
logpath=/root/mongodb-linux-i686-2.0.1/logs/mongo.log
slowms=15
rest=1
이 버전의 mongoDb 클라이언트에 누락된 기본 구성이 있는 것 같습니다.실행 시도:
mongo 127.0.0.1:27017
이상하지만, 그리고 나서 나는 그 문제가 사라졌다는 것을 경험했습니다 :) (그래서 param이 없는 간단한 명령 'mongo'가 나에게 다시 작동하기 시작했습니다.)
[Ubuntu Linux 11.10 x64 / MongoDB 2.0.1]
구성을 확인하여 bind_ip가 설정되어 있는지 확인할 수 있습니다.
bind_ip: 127.0.0.1
그러면 로컬 로그인만 허용됩니다.이것에 대해 설명하고 mongo를 다시 시작하면 도움이 될 수 있습니다.
저도 비슷한 문제가 있었습니다. 사실은 똑같습니다. (몽고 프로세스가 실행되고 있지만 연결할 수 없습니다.)데이터베이스 경로로 이동하여 mongod.lock을 제거한 다음 다시 시도(mongo 재시작)했습니다.그 후에 효과가 있었습니다.
당신에게도 효과가 있기를 바랍니다. unbuntu의 mongodb 수리.
저도 같은 문제가 있었어요.제 경우 MongoDB 서버가 실행되지 않았습니다.
웹 브라우저에서 열어 보십시오.
http://localhost:28017
만약 당신이 할 수 없다면, 이것은 당신이 MongoDB 서버를 시작해야 합니다.
려달을 합니다.mongod
다른 터미널 탭에 있습니다.그런 다음 기본 탭에서 실행합니다.mongo
MongoDB 서버에 연결되는 셸입니다.
제/var/lib/mongodb/mongod.lock
에 발행을 .sudo service mongodb start
,그리고나서mongo
.
/etc/mongod.conf 파일을 열고 연결할 시스템의 IP를 bind_ip에 추가합니다.
bind_ip = 127.0.0.1, 원격 시스템 IP 주소 여기
예:-
bind_ip = 127.0.0.1,192.168.1.5
mongodb 서비스 다시 시작:
sudo service mongod restart
mongodb 포트가 방화벽에서 열려 있는지 확인합니다.
보안에 대해 걱정하지 않는 경우에는 줄에 주석을 달 수도 있습니다.
저도 이런 문제가 있었습니다.MongoDB 저널링 중입니까?로그 파일에서 다음과 같은 "사전 할당" 항목을 발견했습니다."포트에서 연결 대기 중"이라는 마지막 줄을 보고 연결할 수 있었습니다.이 "더 빠른" 모드를 초기화하는 데 12분이 걸렸습니다.
윌리엄
Tue Apr 17 16:48:01 [initandlisten] MongoDB starting : pid=2248 port=27017 dbpath=E:\MongoData 64-bit host=ME
Tue Apr 17 16:48:01 [initandlisten] db version v2.0.0-rc0, pdfile version 4.5
Tue Apr 17 16:48:01 [initandlisten] git version: 8d4bf50111352cee5a4f1abf25b63442d6c45dc4
Tue Apr 17 16:48:01 [initandlisten] build info: windows (6, 1, 7601, 2, 'Service Pack 1') BOOST_LIB_VERSION=1_42
Tue Apr 17 16:48:01 [initandlisten] options: { bind_ip: "ip", dbpath: "E:\MongoData", directoryperdb: true, journal: true, logpath: "E:\MongoData\mongo.log", quiet: true, rest: true, service: true }
Tue Apr 17 16:48:01 [initandlisten] journal dir=E:/MongoData/journal
Tue Apr 17 16:48:01 [initandlisten] recover : no journal files present, no recovery needed
Tue Apr 17 16:48:02 [initandlisten] preallocateIsFaster=true 9.68
Tue Apr 17 16:48:04 [initandlisten] preallocateIsFaster=true 8.44
Tue Apr 17 16:48:06 [initandlisten] preallocateIsFaster=true 9.68
Tue Apr 17 16:48:06 [initandlisten] preallocateIsFaster check took 4.921 secs
Tue Apr 17 16:48:06 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.0
Tue Apr 17 16:52:37 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.1
Tue Apr 17 16:56:54 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.2
Tue Apr 17 17:01:42 [initandlisten] waiting for connections on port 27017
Tue Apr 17 17:01:42 [websvr] admin web console waiting for connections on port 28017
기본적으로 mongodb는 localhost만 수신하도록 구성되어 있습니다.mongodb 기본 구성 파일에서 발췌:
# Listen to local interface only. Comment out to listen on all interfaces.
bind_ip=127.0.0.1
외부 엔티티에서 청취하려면 bind_ip에 주석을 달아야 합니다.
로컬이 아닌 인터페이스에서 수신을 시작하지 않으면 샤드를 추가할 수 없습니다.
HTH,
아베이 단데카르
이건 사실 오류가 아닙니다...여기서 일어나는 일은 Mongo가 로컬 데이터베이스 서버를 실행하기 위해 데몬에 의존하기 때문에, 당신의 셸에서 Mongo 서버를 "불태우기" 위해서는 먼저 Mongo 서비스를 시작해야 합니다.
Fedora Linux(내가 사용하는 Distro)의 경우 다음 명령을 실행해야 합니다.
1 sudo service mongod start
2 mongo
여기 있습니다! 서버가 실행됩니다.이제 시스템 부팅 시 Mongo 서비스를 시작하려면 다음을 실행해야 합니다.
sudo chkconfig --levels 235 mongod on
그게 다야!그렇게 하면 이제 셸에서 서버를 시작하려면 mongo를 입력하기만 하면 되지만, 문제는 서비스를 먼저 시작한 다음 서버를 시작해야 한다는 것입니다. :)
추신: 제가 올린 명령어는 페도라뿐만 아니라 다른 리눅스 배포판에서도 작동할 수 있습니다.그렇지 않은 경우에는 사용하는 디스트리뷰터에 따라 몇 개의 단어를 수정해야 할 수도 있습니다;)
위 Garrett에서 설명한 오류와 동일한 문제에 직면하고 있습니다. 1. 저널링이 활성화된 MongoDB Server가 ps 명령 2를 사용하여 실행되고 있습니다.Mongo 클라이언트 또는 Mongoose 드라이버가 데이터베이스에 연결할 수 없습니다.
해결책: 1. Mongo.lock 파일을 삭제하면 Cent에서 정상으로 돌아가는 것 같습니다.OS 서버. 2.우리는 MongoDB를 운영하는 것에 있어서 상당히 새로운 일이며, 일주일에 몇 번씩 같은 문제가 발생하는 것을 목격하고 있습니다. 3.우리는 정기적으로 잠금 파일을 정리하고 관리자에게 사건이 발생했음을 알리기 위해 cron 일정을 설정했습니다.
이 문제에 대한 버그 수정 또는 이 문제를 해결하기 위한 다른 영구적인 방법을 검색하는 중입니다.
bind_ip이 127.0.0.1이 아닌 다른 항목으로 설정된 경우 로컬 컴퓨터에서도 ip를 명시적으로 추가해야 합니다.로컬 상자의 원격 상자에서 사용하는 것과 동일한 방법을 사용합니다.적어도 그것이 저를 위해 해준 것입니다.
답이라기보다는 참고:방금 이 문제를 검색해 본 결과 이 문제를 발견했습니다.다음은 제 경험에 대한 세부 사항입니다.
셸 오류
markdsievers@ip-xx-xx-xx-xx:~$ mongo
MongoDB shell version: 2.0.1
connecting to: test
Wed Dec 21 03:36:13 Socket recv() errno:104 Connection reset by peer 127.0.0.1:27017
Wed Dec 21 03:36:13 SocketException: remote: 127.0.0.1:27017 error: 9001 socket exception [1] server [127.0.0.1:27017]
Wed Dec 21 03:36:13 DBClientCursor::init call() failed
Wed Dec 21 03:36:13 Error: Error during mongo startup. :: caused by :: DBClientBase::findN: transport error: 127.0.0.1 query: { whatsmyuri: 1 } shell/mongo.js:84
exception: connect failed
Mongo 로그를 통해 알 수 있습니다.
Wed Dec 21 03:35:04 [initandlisten] connection accepted from 127.0.0.1:50273 #6612
Wed Dec 21 03:35:04 [initandlisten] connection refused because too many open connections: 819
이것은 아마도 다른 답변(JaKi)에서도 일부 연결이 제거되고 셸(다른 클라이언트)에 대해 다시 액세스할 수 있는 동일한 현상이 발생했음을 나타냅니다.
저는 이것이 아직 승인된 답을 가지고 있다고 생각하지 않습니다. 그래서 저는 제 2센트를 추가하겠습니다.
저도 방금 똑같은 문제가 있었습니다.잠시 후 iptables 규칙에서 localhost를 잠갔다는 것을 알게 되었습니다.방화벽을 확인합니다.
Ubuntu의 경우:
1월 27일 수요일 10:21:32 오류: 서버 127.0.0.1 셸/mongo에 연결할 수 없습니다.js:84 예외: 연결 실패
해결책
다음 명령을 사용하여 mongodb가 실행 중인지 확인합니다.
ps -ef | grep mongo
mongo가 실행되지 않으면 다음을 얻을 수 있습니다.
vimal 1806 1698 0 10:11 pts/0 00:00:00 grep --color=auto mongo
당신은 몽고 데몬이 그곳에 없다는 것을 보고 있습니다.
그런 다음 구성 파일(root priev 포함)을 통해 시작합니다.
root@vimal:/data# mongod --config /etc/mongodb.conf &
[1] 2131
root@vimal:/data# all output going to: /var/log/mongodb/mongodb.log
다른 세부 정보를 볼 수 있습니다.
root@vimal:~# more /etc/mongodb.conf
새 터미널을 열어 mongod --config /etc/mongodb.conf의 결과를 확인한 다음 mongo를 입력합니다.실행 중이거나 grep이어야 합니다.
root@vimal:/data# ps -ef | grep mongo
root 3153 1 2 11:39 ? 00:00:23 mongod --config /etc/mongodb.conf
root 3772 3489 0 11:55 pts/1 00:00:00 grep --color=auto mongo
지금이다
root@vimal:/data# mongo
MongoDB shell version: 2.0.4
connecting to: test
당신은 몽고DB 쉘을 얻습니다.
이것이 이야기의 끝이 아닙니다.매번 자동으로 시작되고, 대부분의 개발 시스템이 매일 종료되며, 다음 부팅 시에 VM이 자동으로 시작된 것이 틀림없도록 복구 방법을 게시하겠습니다.
몽고드를 시작한 후
$mongod --dbpath <db name>
껍질을 벗기다
$mongo --shell
mongoDB 서버(원격 서버)의 버전이 4.0.3보다 크면 이 문제가 발생합니다.따라서 현재 mongo-client 셸을 아래 mongo로 대체해야 합니다.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
그러면 mongo 클라이언트가 mongodb 제거에 연결할 수 있습니다.
다음 메시지가 표시되는 경우
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.84" (uid=1000 pid=3215 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
shriprasad@shriprasad-HP-430-Notebook-PC:/var/lib/mongodb$ mongo
mongodb 서비스를 root이 아닌 다른 사용자로 시작하려고 합니다.루트 사용자여야 합니다.따라서 루트로 로그인한 다음 다음 명령을 실행합니다.
sudo bash
다음에
service mongodb start
언급URL : https://stackoverflow.com/questions/7958228/mongodb-running-but-cant-connect-using-shell
'sourcecode' 카테고리의 다른 글
'break'에 해당하는 VB 키워드 (0) | 2023.05.24 |
---|---|
특정 커밋으로 병합 (0) | 2023.05.24 |
Azure 함수는 어떻게 확장됩니까? (0) | 2023.05.24 |
드롭다운 목록을 만드는 방법은 무엇을 선택합니까? (0) | 2023.05.24 |
Objective-C 파일이 .m 확장자를 사용하는 이유는 무엇입니까? (0) | 2023.05.14 |