programing

MongoDb Atlas 서버에 연결하는 중 오류 발생

lastmoon 2023. 7. 6. 22:32
반응형

MongoDb Atlas 서버에 연결하는 중 오류 발생

그래서 저는 현재 웹 애플리케이션을 작성하고 있는데 데이터베이스가 필요해서 mongodb와 mongoose로 결정했습니다.지금까지 저는 localhost에서 모든 것을 테스트했고 작동했지만 데이터를 서버로 이동하고 싶었습니다.저는 아틀라스에 대해 듣고 등록을 하고 데이터를 "업로드"했습니다.

이제 node.js 앱을 통해 클러스터에 연결하려고 합니다.

mongoose.connect('mongodb+srv://engllucas:p%40ssw0rd@insight-quhku.mongodb.net/test');

나는 애플리케이션 연결 지점에서 mongodb Atlas 사이트의 문자열을 받았습니다.

그리고 비밀번호를 바꿨습니다.

mongoose.connect('mongodb://engllucas:p%40ssw0rd@insight-quhku.mongodb.net/test');

이것도 효과가 없었어요.

이것이 오류 메시지입니다.

{ MongoError: failed to connect to server [insight-shard-00-02-quhku.mongodb.net:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 18.194.163.64:27017]
at Pool.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\topologies\server.js:503:11)
at emitOne (events.js:115:13)
at Pool.emit (events.js:210:7)
at Connection.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\pool.js:326:12)
at Object.onceWrapper (events.js:318:30)
at emitTwo (events.js:125:13)
at Connection.emit (events.js:213:7)
at TLSSocket.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\connection.js:245:50)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at TLSSocket.emit (events.js:210:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
  name: 'MongoNetworkError',

메시지: '처음 연결할 때 서버 [insight-shard-00-02-quhku.mongodb.net:27017 ]에 연결할 수 없음 [MongoNetworkError: connect ECONFUSED 18.165.64:27017]' }(노드:4920) 처리되지 않은 약속거부 경고:처리되지 않은 약속 거부(예: ID: 1): MongoNetworkError: 첫 번째 연결 시 [insight-shard-00-02-quhku.mongodb.net:27017 ] 서버에 연결하지 못했습니다 [MongoNetworkError: connectECONFUSED 18.165.64:27017] (노드:4920) [DEP0018] 사용 중지 경고:처리되지 않은 약속 거부는 더 이상 사용되지 않습니다.앞으로 처리되지 않는 약속 거부는 0이 아닌 종료 코드로 Node.js 프로세스를 종료합니다.

저도 비슷한 문제가 있었는데, 클러스터 -> 보안 -> IP 화이트리스트 아래에 제 IP 주소를 화이트리스트에 추가하여 해결할 수 있었습니다. 클릭하는 .my current ip address구글에서 내 IP가 무엇인지 검색하고 대신 붙여넣기만 하면 됩니다.효과가 있었으면 좋겠어요!

MongoDB Atlas 클러스터에 연결하는 데 문제가 발생했습니다.저는 두 대의 다른 컴퓨터(Macbook Pro와 Windows PC)에서 프로젝트를 진행하고 있었기 때문에 이 문제를 두 번 해결해야 했습니다.

다음은 애플리케이션이 클러스터에 연결되지 않는 문제를 해결하기 위해 파악한 모든 사항에 대한 포괄적인 답변입니다.

먼저 위의 제안과 같이 IP가 화이트리스트에 있는지 확인합니다.가장 쉬운 솔루션은 0.0.0.0/0의 "모든 IP" 화이트리스트입니다.

번째로 VPN을 사용하는 경우 VPN을 확인합니다.VPN에 연결하는 동안 클러스터에 연결하려고 했습니다.VPN을 끄면 연결할 수 있었습니다.

셋째, 인터넷 설정이 클러스터에 연결하는 데 방해가 되지 않는지 확인합니다.내 집 Xfinity wifi 보안 설정이 너무 높게 설정되어 연결을 방해했습니다.라우터가 포트 27017 연결을 허용하지 않았던 것 같습니다.이 문제가 발생하는지 테스트하는 한 가지 방법은 WiFi 대신 컴퓨터를 인터넷 전화기에 연결하고 연결을 시도하는 것입니다.저는 아이폰을 인터넷 핫스팟으로 사용하여 연결할 수 있었습니다.라우터를 공장 설정으로 재설정하여 문제를 해결했습니다.

버전 5.0.15 이전의 mongoose를 사용하는 경우:

mongodb+srv:// uri는 기본 네이티브 드라이버에 유효하지 않습니다.

uri는 복제본 호스트와 replicaSet/authSource 매개 변수를 포함해야 하므로 +srv를 제거하는 것만으로는 작동하지 않습니다.

당신도 할 수 있습니다.

mongoose 5.0.15로 업그레이드하고 더 짧은 +srv 형식을 사용합니다.

또는

현재 버전을 Atlas 클러스터 대시보드의 전체 uri와 함께 사용하고 이전 드라이버(아래 참고 참조) 버전 uri를 선택합니다.

클러스터 대시보드에서 연결 단추를 누른 다음(노드 서버의 IP를 화이트리스트에 추가했다고 가정) "응용 프로그램 연결"을 선택한 다음 "3.4 드라이버 또는 이전 버전을 사용합니다"를 누릅니다.생성된 uri 문자열을 사용하여 암호를 대체합니다.

참고: Atlas 클러스터 대시보드의 connect helper에서 URI 문자열을 선택하기 위한 대화상자에서 "나는 드라이버 3.* 또는 (new|older)를 사용하고 있습니다."라고 표시됩니다.3.6과 3.4는 드라이버 버전이 아니라 서버 버전을 가리키기 때문에 단어 선택이 어렵습니다.또한 서버의 한 버전 또는 다른 버전을 사용하는 것은 연결에 사용되는 드라이버와 아무런 관련이 없으며, 이 드라이버는 사용할 URI 버전을 결정하는 실제 종속성입니다.

"IP 화이트리스트"의 문제입니다.한 번 편집하고 업데이트하면 잘 작동할 것입니다.

위의 답변이 옳지만 한 가지 요점을 추가하고 싶습니다.

보안 측면에서 볼 때 좋지 않습니다.

  1. 저도 비슷한 문제가 있었는데, 아래에 제 IP 주소를 화이트리스트에 추가하여 해결할 수 있었습니다.Clusters -> security -> IP Whitelist.내 항목을 클릭하는 대신current ip address구글에서 내 IP가 무엇인지 검색하고 대신 붙여넣기만 하면 됩니다.효과가 있었으면 좋겠어요!

  2. 저도 비슷한 문제가 있었는데, 아래에 제 IP 주소를 화이트리스트에 추가하여 해결할 수 있었습니다.Clusters -> security -> IP Whitelist.이 했습니다. IP 주소입니다.0.0.0.0/0모두에게 개방될 것입니다.

연결 문자열의 시작 부분에 "+srv"를 포함하여 다음과 같이 이 문제를 해결했습니다.

mongoose.connect("mongodb+srv://<username>:<password>@<address>/<database>?retryWrites=true&w=majority", {useNewUrlParser: true});

그것은 이상합니다. 왜냐하면 저는 저에게 반대로 하라고 지시하는 몇 가지 답을 발견했기 때문입니다.제 몽구스 버전이 헷갈린 것 같아요.

이것이 누군가에게 도움이 되기를 바랍니다.

또한 MongoDB Compass를 https://cloud.mongodb.com/ 클러스터에 연결하는 동안 비슷한 문제에 직면했습니다.

다음 단계에 따라 문제가 해결됩니다.

  1. google.com 방문 > 내 IP 주소 입력 > 시스템/네트워크의 공용 IP 주소 복사
  2. https://cloud.mongodb.com/ 클러스터 > 보안 선택 > 네트워크 액세스 > IP 클릭 후 목록 탭 > IP 주소 추가 > 공용 IP 주소를 입력 > 공용 IP 주소를 입력합니다.

핫스팟에 연결되어 있고 모든 작업이 올바르게 수행되었다고 생각되는 경우 연결을 끊었다가 다시 연결합니다.특히 인터넷 연결을 끄고 다시 연결합니다.

보아하니, 변화하는 것 같습니다.

mongoose.connect(keys.mongoURI);

로.

mongoose.connect(keys.mongoURI, () => { }, { useNewUrlParser: true })
    .catch(err => {
        console.log(err);
    });

저를 위해 일했습니다.

현재 IP 주소가 MongoAtlas IP 화이트리스트에 있는지 확인합니다.VPN을 업데이트한 후 이 문제가 발생했습니다.

저는 그 문제를 해결했습니다.다음은 제가 사용한 단계입니다.

  1. mongodb에서 우선 신규 사용자 추가 (보안 > 데이터베이스 접근 > 신규 사용자 추가 > )
  2. 그런 다음 .env 파일에 새 사용자 이름과 암호를 씁니다.
  3. 서버를 종료하고 서버를 다시 실행합니다.

이것이 저에게 효과가 있었던 해결책입니다.

저도 비슷한 문제가 있었습니다.그 후 변경된

mongoose.connect(db, () => { }, { useNewUrlParser: true })
    .catch(err => {console.log(err);});

하지만 오류가 발생했습니다.

(node:5796) DeprecationWarning: 현재 URL 문자열 파서가 더 이상 사용되지 않으며 이후 버전에서 제거됩니다.새 파서를 사용하려면 옵션 {useNewUrlParser:true}을(를) MongoClient.connect에 전달합니다.

그런 다음 코드를 변경했습니다.

mongoose.connect(db, { useNewUrlParser: true, useUnifiedTopology: true }, () => { })
        .catch(err => console.log(err));

이것은 저에게 효과가 있었습니다.

  • 저도 같은 오류를 얻었고 이 논리를 시도했습니다.
  • netwrok Access의 mongoDb 아틀라스에서 이것을 제외하고, 모든 IP 주소를 확인합니다.그리고 ----------------0.0.0/0으로 설정합니다.

저도 같은 문제가 있어서 화이트리스트에 추가했지만 다른 솔루션은 도움이 되지 않았습니다.하지만 다른 사용자를 만든 후에.데이터베이스 사용자 권한 필드에서 새 사용자를 작성할 때 기본값인 "데이터베이스에 읽기 및 쓰기" 대신 "Atlas admin"을 선택했습니다.그 후, 연결이 작동했습니다.

구글 => 내 IP 주소 => 복사합니다.

Atlas => Clusters 탭으로 이동한 후 왼쪽에서 확인합니다=> Security => Network Access => Edit Ip => IP 주소 붙여넣기.

서버를 다시 실행하면 작동해야 합니다 :)

IP 화이트리스트가 올바르게 설정되어 있는 동안에도 동일한 문제가 발생했습니다!

그 이유는 MongoDB Enterprise Atlas가 SSL 제거 계층을 필요로 하지 않고 연결을 시도하면 다음과 같은 비합리적이고 자기 설명적인 오류가 발생하기 때문입니다.

Failed to connect to mongodb-m0-nnxxx.mongodb.net:27017
No chance to Authorize

IP 화이트리스트가 있는 mondodb 클라이언트를 사용하여 연결하려고 하면 다음과 같은 오류 메시지가 나타납니다.

mongo "mongodb+srv://mongodb-m0-nnxxx.mongodb.net/test" --username admin

DBClientConnection failed to receive message from mongodb-m0-shard-00-00-nnxxx.mongodb.net.:27017 - HostUnreachable: Connection closed by peer
Unable to reach primary for set mongodb-m0-shard-0
Cannot reach any nodes for set mongodb-m0-shard-0. Please check network connectivity and the status of the set. This has happened for 5 checks in a row.

예를 들어 Robo 3T 클라이언트를 사용하는 경우 "SSL 프로토콜 사용" 확인란을 활성화해야 하며 **인증 방법: 자체 서명 인증서 **

테스트를 통해 진단 출력이 생성됩니다.

v Connected to mongodb-m0-nnxxx.mongodb.net:27017 via SSL tunnel
v Authorized on admin database as admin

이것이 누군가에게 도움이 되기를 바랍니다.

나는 그것을 깨닫기 전에 vpn과 연결했습니다.나중에 db에 연결하려고 했을 때 연결할 수 없었습니다.저는 제 로프와 권한에 있는 모든 권한을 다시 열었습니다.그리고 나서 vpm과 다시 연결했을 때 연결할 수 있었습니다.

클러스터의 암호(특별한 기호가 없는 암호)를 변경하는 것이 도움이 되었습니다.

여러 가지 문제 해결 단계를 거친 후 휴대 전화를 사용하여 컴퓨터에 연결하여 ISP 게이트웨이가 문제인지 확인했습니다.저는 제 전화기와 연결하는 데 문제가 없이 연결할 수 있었습니다.그 시점에서, 저는 그것이 ISP의 문제라는 것을 알았습니다.ISP의 인터넷을 사용하여 연결하려면 게이트웨이 장치에서 포트 27017을 열어야 합니다.사용 가능한 포트 목록에 포트 27017을 추가하려면 특정 ISP에 대한 '포트 포워딩'을 검색합니다.저와 같은 일부 ISP에서는 기본적으로 열려 있지 않습니다.좋은 코딩!

AWS 콘솔을 사용하는 경우 실행 중인 인스턴스의 Security Group에서 인바운드 및 아웃바운드 규칙을 설정하고 포트 27017에 대한 사용자 지정 tcp를 설정합니다.

대학생인 경우 MongoDB Atlas에 연결하지 못할 수도 있습니다(멀티플레이어 게임과 마찬가지로).그러므로 아직 시도하지 않았다면 아마도 대학 인터넷 네트워크에서 연결을 끊고 핫스팟을 통해 모바일 데이터로 테스트하십시오.

이 솔루션은 저에게 효과가 있었습니다(저는 IIT Bombay에 머물고 있습니다).

문제는 dropDatabase 옵션이 true로 설정되어 있고 데이터베이스 사용자에 대한 권한이 읽기 및 쓰기 전용인 시드 데이터를 생성하려고 한다는 것입니다.

많은 연구 끝에, 저는 사용자에게 다음과 같은 사용자 지정 규칙을 제공하여 문제를 해결할 수 있었습니다.Database Access -> Edit -the user bar- -> Specific Privileges -> dbAdminAnyDatabase or dbAdmin and you specify the database.

저도 비슷한 문제가 있어서 mongo에 연결할 수 없었습니다.mongodb는 특수 문자가 포함된 내 비밀번호를 좋아하지 않았습니다.저는 URL 인코딩과 다른 모든 종류의 조작을 시도했지만, 결국 제게 이 문제를 해결한 것은 단순히 특수 문자를 사용하지 않는 비밀번호로 변경하는 것이었습니다.나는 mongodb 비밀번호 생성기를 사용했고 지금은 모든 것이 정상적으로 작동합니다.

위에서 언급한 모든 기타 옵션이 실패한 경우 다음과 같이 처리했습니다.

방금 내 와이파이 네트워크를 "Private"에서 "Public"으로 만들었습니다.

이것은 또한 마지막 이슈를 고쳤습니다.

언급URL : https://stackoverflow.com/questions/49894913/error-at-connecting-to-mongodb-atlas-server

반응형