Mongo Network Error: 첫 번째 연결 시 [localhost:27017]서버에 연결하지 못했습니다[Mongo Network Error:connect ECONNREFUSED 127.0.1:27017]
저는 nodeJS에 처음이고, 유튜브의 예고편을 보고 배우기 시작했는데, mongodb의 경우 연결 기능을 추가하기 전까지는 모든 것이 잘 진행되었습니다.
mongo.connect("mongodb://localhost:27017/mydb")
cmd(node start-app)에서 코드를 실행하면 다음 오류가 나타납니다.
MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
내가 어느 단계를 놓쳤는지 누가 설명해 줄 수 있나요?
var express = require("express");
var MongoClient = require('mongodb');
var url = "mongodb://localhost:27017/mydb";
var webService = require("./webService");
var server = express();
MongoClient.connect(url, function (err, db) {
if (err) throw err;
console.log("Database created!");
db.close();
});
server.use(express.urlencoded({ extended: true }));
server.set('views', __dirname);
server.get('/', function (request, response) {
response.sendFile(__dirname + '/MainPage.html');
});
server.get('/Sign', function (request, response) {
response.render(__dirname + '/Sign.ejs');
});
server.post("/signUp", webService.signUp);
server.post("/createUser", webService.createUser);
server.listen(5500);
하셔야 합니다.MongoDB
먼저 시스템 내의 데이터베이스 서버를 시작하고 시작합니다.
하여 설치하다MongoDB
https://docs.mongodb.com/manual/installation/
MongoDB 를 인스톨 하고 있는 경우는, 서버가 어느 상태(start/stop)인지 확인합니다.mongo 쉘 클라이언트를 통해 연결을 시도합니다.
이들 중 상당수는 이를 추가하지 않고 있으며, 특히 AWS EC2 Instance에서 같은 문제가 발생하여 다른 솔루션을 시도했습니다.해결 방법: 코드 내의 데이터베이스 URL 중 하나에 이 파라미터 'authSource'가 누락되어 있습니다.이 파라미터는 저에게 도움이 됩니다.
mongodb://myUserName:MyPassword@ElasticIP:27017/databaseName?authSource=admin
나는 같은 문제에 직면했지만 많은 연구 끝에 직면했다.이것이 문제의 원인임을 알게 되었으므로 단말기에서 이 명령을 실행합니다.
sudo 서비스 mongod 시작
단말기에서 mongo를 실행합니다.
구글이 생각해낸 모든 솔루션을 스택 오버플로에서 시도해 본 결과, 나의 특별한 문제가 무엇인지 알게 되었습니다.가상 상자에서 로컬 호스트에 액세스할 수 있도록 호스트 파일을 편집한 지 오래입니다.
이 엔트리를 삭제하면 위의 솔루션에서 제공된 링크에서 mongoDB를 올바르게 설치하고 올바른 약속 처리 코드를 포함하여 문제가 해결되었습니다.
mongoose.connect('mongodb://localhost/testdb').then(() => {
console.log("Connected to Database");
}).catch((err) => {
console.log("Not Connected to Database ERROR! ", err);
});
위의 @CoryM의 답변 뒤에 있는 논리에 따라 주세요.
구글이 생각해낸 모든 솔루션을 스택 오버플로에서 시도해 본 결과, 나의 특별한 문제가 무엇인지 알게 되었습니다.가상 상자에서 로컬 호스트에 액세스할 수 있도록 호스트 파일을 편집한 지 오래입니다.
이 엔트리를 삭제하면 해결...
Python Machine Learning 。그래서 아직 필요해서 지우는 대신127.0.0.1
localhost
가 있었어요
mongoose.connect('mongodb://127.0.0.1/testdb')
IP 주소가 변경되었을 가능성이 있습니다.
최근에 모뎀을 다시 시작한 경우, Atlas에 화이트리스트에 있는 IP가 변경됩니다.
따라서 Atlas로 돌아가서 보안>의 화이트리스트에 새 IP 주소를 추가해야 합니다.네트워크 액세스
이런 생각이 들었고, 인터넷 접속 장애 때문이라는 것을 알게 되었습니다.보안상의 이유로 여러 웹사이트가 차단되어 있는 저희 집에서 공용 와이파이를 사용하면 몽고는 접속을 거부합니다.하지만 내 모바일 데이터를 사용하면 데이터베이스에 연결할 수 있습니다.
mongoDB 서버가 이미 설치되어 있고 리모트호스트에서 접속할 수 없는 경우는, 다음의 순서에 따릅니다.
하여 Mongodb 설정 .Mongodb 설정 은 "Mongodb"에 ./etc/mongod.conf
쓰세요.bindIp
/ "IP" /0.0.0.0
몽고답
sudo vi /etc/mongod.conf
파일에는 다음과 같은 내용이 포함되어 있어야 합니다.
systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: journal: enabled: true processManagement: fork: true net: bindIp: 127.0.0.1 // change here to 0.0.0.0 port: 27017 setParameter: enableLocalhostAuthBypass: false
[ ] 를
bindIp
다시sudo service mongod restart
이것으로 리모트 서버에서 mongodb 서버에 접속할 수 있게 됩니다.
mongoose의 메이저버전을 업그레이드하여 이 문제를 해결했습니다.
"dependencies": {
- "mongoose": "^5.4.13",
+ "mongoose": "^6.2.4",
}
mongo db와 mongoose처럼 클라이언트를 설치하는 것처럼 모든 것이 설정되어 있다면 기본 폴더의 터미널에서 mongod를 실행합니다.명령을 실행한 후 작업 중인 프로젝트 파일을 실행하면 오류가 나타나지 않습니다.
이 명령을 실행하면 오류 세부 정보를 확인할 수 있습니다.
sudo service mongod status
에러가 이와 같은 것이라면
- 소켓 파일 /tmp/mongodb-27017.sock의 연결을 해제하지 못했습니다.알 수 없는 오류
- src/mongo/transport/transport_layer_asio.cpp 670에서의 치명적인 어설션 40486
이것을 실행하는 것만으로 문제가 해결됩니다.
rm /tmp/mongodb-27017.sock
저는 동네 스타벅스에서 일하면서 이런 문제를 겪었는데, 몽고 아틀라스를 통해 처음 데이터베이스를 설정했을 때 기억이 났습니다.데이터베이스에 액세스 할 수 있도록 IP 주소를 설정합니다.여러 스레드를 살펴본 후 Atlas에서 IP 주소를 변경했더니 문제가 사라졌습니다.이게 도움이 됐으면 좋겠네요.
도움이 될지는 모르겠지만 막상 해보니 효과가 있었어요.
「」mongo
단말기로.
그런 다음 mongo 명령어가 반환하는 URL을 복사했습니다.
mongodb://127.0.0.1:*port*
JS코드의 URL을 이것으로 대체했습니다.
먼저 명령행 mkdir C:\data\db(데이터베이스용)를 사용하여 폴더를 작성한 후 명령어 프롬프트를 1개(관리 모드)로 mongod --port 27018을 실행합니다.이 경우 원하는 포트 번호를 지정할 수 있습니다.
이건 나한테 효과가 있었어.
mongoose.Promise = global.Promise;
.connect(
"mongodb://127.0.0.1:27017/mydb",
{ useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true}).then(db => {
console.log("Database connected");
}).catch(error => console.log("Could not connect to mongo db " + error));
localhost를 사용하고 있었기 때문에 다음과 같이 변경했습니다.
mongodb://127.0.0.1:27017/mydb
있다는 이었습니다.mongoDB
★★★★★★ 。
나는 다음을 가지고 있었다.
DATABASE_URL= "mongodb://localhost:3000/node-express-mongodb-server"
집에서는.env
을 작성했습니다만, 「(환경변수)」를 실행하기 했습니다.mongoDB server
제가 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.mongoDB server
수 번호에 "cmd" (는 "cmd"로 표기)로했습니다.mongoDB
DATABASE_URL= "mongodb://localhost:27017/node-express-mongodb-server"
이제 잘 작동하게 되었습니다.
따라서 위의 솔루션 중 어느 것도 작동하지 않을 때 모든 것을 올바르게 설치한 후 시스템을 재시작하려고 생각했습니다.
이제 됐다.
내가 위에서 말한 모든 것을 했지만, 운이 없었다.나는 재기동만 성공했어!!한 번 재시작할 수도 있습니다.
Mac 사용자인 경우 터미널에서 homeBrew를 업그레이드하면 됩니다.
$ brew upgrade
$ mongod --config usr/local/etc/mongod.config
$ Xcode-select --install
$ mongo
를 'D' 했을 때 되었습니다.27017
27017
다른 포트에서 시작했더니 문제가 해결되었습니다.
위해서는, 「」로 합니다./etc/mongod.conf
쓰세요.port: 27017
port: 27019
.
하다
sudo systemctl restart mongod.service
.
MongoDB를 .--port
다음과 같이 합니다.
mongod --port 27019
「」
mongo --port 27019
최고!
1) mongodb를 설치하지 않은 경우 설치합니다.
2) 새 터미널을 열고 "mongo"를 입력합니다.기본 포트 27017을 사용하여 로컬호스트에서 실행되고 있는 MongoDB 인스턴스에 연결합니다.
mongoose.connect('mongodb://localhost:27017/').then(() => {
console.log("Connected to Database");
}).catch((err) => {
console.log("Not Connected to Database ERROR! ", err);
});
로컬 호스트 Mongoose 데이터베이스에만 연결하여 자신만의 컬렉션을 만드는 것이 좋습니다.포트 번호(기본값: 27017)를 잊지 마십시오.
최적의 표시를 위해 MongoDB UI용 Mongoose-compass를 다운로드하십시오.
이게 날 도와줬어새 폴더를 만들어 보십시오.MongoDB가 C:\Program Files에 설치되어 있는 경우 폴더는 db라고 불리며 폴더 데이터 내에 있어야 합니다.C:\data\db
mongod를 시작할 때 db를 찾을 수 없는 로그가 있어야 합니다.
VPN에 접속하여 접속이 완료되었습니다.나는 몇 가지 제한이 있는 것 같은 학교의 와이파이를 사용하고 있었다.
cloud.mongodb.com에 접속하여 클러스터에 접속하고 있을 것 같습니다.
빠른 수정 방법 중 하나는 연결 탭으로 이동하여 현재 IP 주소를 추가하는 것입니다(브라우저 또는 데스크톱 앱의 클러스터 포털에서).와이파이 변경 등 여러 가지 이유로 IP주소가 변경되었을 것입니다.
이 방법을 시도해 보세요. 이 오류가 발생했을 때 효과가 있었어요.
내 경우는 조금 달랐다.시스템을 재부팅한 후 로컬 개발을 하면서 Mongo에 IP 주소를 화이트리스트에 올리지 않았습니다.
Select Network Access > Add IP Address > Add your current IP Address
방화벽이 MongoDB에 연결하던 포트 27017을 차단했습니다.
시스템에서 어떤 방화벽이 사용되고 있는지 확인합니다(예: csf, config 파일 저장 위치).
/etc/csf/csf.conf
TCP 검색_다음과 같이 IN 및 TCP_OUT 포트 27017을 허용 착신 및 발신 포트에 추가
# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2222,27017"
# Allow outgoing TCP ports
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995,2222,27017"
config 파일을 저장하고 csf를 재시작하여 적용합니다.
csf -r
이것은 만약 당신이 당신의 mongo를 .http 셋업에 설치했다면 다른 사람에게 도움이 될 수 있습니다. 소프트웨어를 열고 설치 후 다시 시도하지 말고 복구를 선택하십시오.
먼저 시스템에 MongoDB 데이터베이스 서버를 설치하고 시작해야 합니다.
시스템에 이미 MongoDB 데이터베이스를 설치한 경우 다음 단계에 따라 DB가 시작 위치에 있는지 확인해야 합니다.
- CTRL + Shift + Esc 키를 누릅니다.
- 서비스 탭에 가서 몽고를 검색하다
- 상태를 확인합니다.정지될 수 있습니다.오른쪽 아래 구석에 있는 [서비스]탭을 클릭하여 MongoDB를 다시 검색합니다.
- 마우스 오른쪽 버튼을 클릭하거나 왼쪽 패널에서 DB를 시작합니다.
노드 버전이 업그레이드되었습니다.따라서 아래 단계를 따르십시오.
- nvm 설치
- 이전 버전의 노드(nvm i 16.12.0 등)를 설치합니다.
- nvm 사용 16.12.0
nvm의 usefull 명령어
사용 가능한 nvm 목록(사용 가능한 노드 버전이 표시됩니다)
macbook에서 오류가 발생한 경우 이 명령을 실행하여 mongodb 서버를 계속 실행합니다.
mongod --config /usr/local/etc/mongod.conf --fork
가장 큰 문제는 mongodb 서버가 연결을 거부하고 있다는 것입니다. 서버가 Macbook에 설치되어 있는데도 서버가 켜져 있지 않거나 활성화되지 않았을 수 있습니다.
언급URL : https://stackoverflow.com/questions/50173080/mongonetworkerror-failed-to-connect-to-server-localhost27017-on-first-connec
'programing' 카테고리의 다른 글
jsx가 동작하지 않는다. (0) | 2023.02.11 |
---|---|
jQuery AJAX 호출 로드 표시기 구현 (0) | 2023.02.11 |
링크를 붙여 이미지를 중앙에 배치하다 (0) | 2023.02.11 |
"불법 인수예외:Spring Boot 어플리케이션에서 관리 타입이 아님" (0) | 2023.02.11 |
반응 효소 두 번째(또는 n번째) 노드 찾기 (0) | 2023.02.11 |