문서 메뉴
문서 홈
/ / /
Rust 드라이버

연결 문제 해결

이 페이지의 내용

  • 서버 연결 오류
  • 연결 문자열 확인
  • 방화벽 구성
  • 연결 횟수 확인
  • 인증 오류
  • 자격 증명 서식 확인
  • 인증 메커니즘 확인
  • 사용자가 인증 데이터베이스에 있는지 확인
  • DNS 확인 오류
  • 데이터베이스 배포 가용성 확인
  • 네트워크 주소 확인

이 페이지에서는 MongoDB Rust 드라이버를 사용하여 MongoDB 배포서버에 연결할 때 발생할 수 있는 문제에 대한 잠재적인 솔루션을 제공합니다.

참고

이 페이지에서는 연결 문제만 다룹니다. MongoDB 또는 드라이버에 다른 문제가 발생하는 경우 다음 리소스를 방문하세요.

  • 작업 중에 드라이버가 발생시키는 다양한 오류 유형을 처리하는 방법에 대한 권장 사항은 작업 오류 처리 를 참조하세요.

  • 이슈 & 도움말 페이지에서 버그 보고, 드라이버 기여, 추가 리소스 찾기에 대한 정보를 확인할 수 있습니다.

  • 질문, 토론 또는 일반적인 기술 지원을 위한 MongoDB Community 포럼

  • Rust 드라이버에 대한 일반적인 질문과 해당 답변을 확인할 수 있는 자주 묻는 질문(FAQ) 섹션

서버에 연결하려고 할 때 문제가 발생하면 Rust 드라이버는 오류 메시지를 반환합니다. 이 오류가 다음 메시지와 유사하다면 드라이버를 MongoDB deployment에 연결할 수 없음을 나타냅니다.

Error: Error { kind: ServerSelection { message: "Server selection timeout:
No available servers. Topology: { Type: Unknown, Servers: [ { Address:
127.0.0.1:27017, Type: Unknown, Error: Kind: I/O error: Connection refused
(os error 61), labels: {} } ] }" }, labels: {}, wire_version: None, source:
None }

다음 섹션에서는 문제 해결에 도움이 될 수 있는 방법에 대해 설명합니다.

연결 문자열의 호스트 이름과 포트 번호가 모두 정확한지 확인합니다. 이 샘플 오류 메시지에서 호스트 이름은 127.0.0.1 이고 포트는 27017 입니다. MongoDB Server 인스턴스의 기본 포트 값은 27017 이지만 다른 포트에서 수신 대기하도록 MongoDB를 구성할 수 있습니다.

복제본 세트에 연결할 때 연결 문자열에 모든 복제본 세트 호스트를 포함합니다. 연결 문자열의 각 호스트를 쉼표로 구분합니다. 이렇게 하면 호스트 중 하나에 연결할 수 없는 경우 드라이버가 연결을 설정할 수 있습니다.

복제본 세트에서 여러 호스트를 지정하는 방법에 대해 자세히 알아보려면 연결 가이드의 복제본 세트 에 연결 섹션을 참조하세요.

MongoDB 배포서버가 방화벽 뒤에서 호스팅되는 경우 MongoDB가 수신 대기하는 포트가 방화벽에서 열려 있는지 확인합니다. 배포가 기본 네트워크 포트에서 수신 대기하는 경우 방화벽에서 포트 27017이 열려 있는지 확인합니다. 배포가 다른 포트에서 수신 대기하는 경우 포트가 방화벽에서 열려 있는지 확인합니다.

경고

MongoDB deployment에서 수신 대기하는 방화벽 포트인지 확실하지 않은 경우 방화벽 포트를 열지 마세요.

Client 인스턴스는 연결 풀에서 최대 동시 개방 연결 수를 지원합니다. 구성 매개 변수 maxPoolSize는 이 값을 정의하며 기본적으로 100으로 설정됩니다. maxPoolSize만큼 열려 있는 연결이 이미 여러 개 있는 경우 서버는 연결을 사용할 수 있을 때까지 기다립니다. 이 대기 시간이 maxIdleTimeMS 값을 초과하면 드라이버는 오류로 응답합니다.

드라이버에서 연결 풀이 작동하는 방식에 대해 자세히 알아보려면 Rust 드라이버에서 연결 풀링은 어떻게 작동하나요? FAQ 페이지에서 확인 가능합니다.

권한 부여가 올바르게 구성되지 않은 경우 Rust 드라이버가 MongoDB 배포서버에 연결하지 못할 수 있습니다. 이러한 경우 드라이버는 다음 메시지와 유사한 오류 메시지를 표시합니다.

Error: Error { kind: Authentication { message: "SCRAM failure: bad auth :
authentication failed" }, labels: {}, wire_version: None, source: Some(Error
{ kind: Command(CommandError { code: 8000, code_name: "AtlasError", message:
"bad auth : authentication failed", topology_version: None }),
labels: {}, wire_version: None, source: None }) }

다음 섹션에서는 문제 해결에 도움이 될 수 있는 방법을 설명합니다.

인증 문제의 가장 일반적인 원인 중 하나는 MongoDB 연결 문자열의 잘못된 자격 증명 형식입니다.

연결 문자열에 대한 자세한 내용은 연결 문자열 만들기 가이드를 참조하세요.

연결 문자열에 사용자 이름과 암호가 포함된 경우 올바른 형식인지 확인합니다.

참고

사용자 이름 또는 암호에 다음 문자가 포함된 경우 백분율로 인코딩해야 합니다.

: / ? # [ ] @

연결 문자열에 퍼센트 인코딩된 사용자 이름과 비밀번호를 사용합니다.

자격 증명 및 인증 메커니즘이 올바른지 확인합니다. 연결 문자열의 옵션에서 인증 자격 증명을 지정할 수 있습니다.

또는 Credential 구조체에 인증 자격 증명을 지정할 수 있습니다.

인증에 대해 자세히 알아보려면 인증 메커니즘 가이드를 참조하세요.

사용자 이름 및 비밀번호 기반 인증 방법을 사용하는 경우 사용자 이름을 인증 데이터베이스에 정의해야 합니다.

기본 인증 데이터베이스는 admin 데이터베이스입니다. 인증에 다른 데이터베이스를 사용하려면 연결 문자열에 authSource 옵션을 지정합니다.

다음 예시에서는 MongoDB가 users 데이터베이스를 인증 데이터베이스로 사용하도록 지시합니다.

let uri = "mongodb://<username>:<password>@<hostname>:<port>/?authSource=users";
let client = Client::with_uri_str(uri).await?;

Rust 드라이버가 DNS 연결을 확인하지 못할 수도 있습니다. 이 경우 다음 메시지와 유사한 오류 메시지가 나타날 수 있습니다.

Error: Error { kind: DnsResolve { message: "sample message. type:
SRV class: IN" }, labels: {}, wire_version: None, source: None }

드라이버에서 이 오류를 보고하면 다음 섹션의 방법을 시도하여 문제를 해결합니다.

MongoDB Atlas에 연결하는데 드라이버가 Atlas 데이터베이스 배포의 DNS 호스트를 찾을 수 없는 경우, 데이터베이스 배포가 일시 중지되거나 삭제될 수 있습니다.

데이터베이스 배포가 Atlas에 존재하는지 확인합니다. 클러스터가 일시 중지된 경우 Atlas UI 또는 Atlas 명령줄 인터페이스에서 클러스터를 재개할 수 있습니다.

클러스터를 재개하는 방법을 알아보려면 Atlas 설명서의 Resume One Cluster를 참조하세요.

연결 문자열의 네트워크 주소 또는 호스트 이름이 정확한지 확인합니다.

배포가 MongoDB Atlas에서 호스팅되는 경우 클러스터에 연결 튜토리얼을 따라 Atlas 연결 문자열을 찾을 수 있습니다.

돌아가기

FAQ

다음

작업 오류 처리