이 페이지에서는 PHP 라이브러리를 사용하여 MongoDB deployment 에 연결할 때 발생할 수 있는 문제에 대한 잠재적인 해결책을 제공합니다.
참고
이 페이지에서는 연결 문제만 다룹니다. MongoDB 또는 PHP 라이브러리를 사용할 때 다른 문제가 발생하는 경우 다음 리소스를 방문하세요.
문제 및 도움말 페이지에서 버그 보고 , 라이브러리 기여, 추가 리소스 찾기에 대한 정보를 확인할 수 있습니다.
질문, 토론 또는 일반적인 기술 지원을 위한 MongoDB Community 포럼
서버 연결 오류
서버 에 연결하려고 할 때 문제가 발생하면 PHP 라이브러리는 오류 메시지를 반환합니다. 이 오류가 다음 메시지와 유사하다면 라이브러리를 MongoDB deployment 에 연결할 수 없음을 나타냅니다.
No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling hello on 'localhost:27017']
다음 섹션에서는 문제 해결에 도움이 될 수 있는 방법에 대해 설명합니다.
연결 URI 확인
연결 URI의 호스트 이름과 포트 번호가 모두 정확한지 확인합니다. 샘플 오류 메시지에서 호스트 이름은 127.0.0.1
이고 포트는 27017
입니다. MongoDB Server 배포서버 의 기본값 포트 값은 27017
이지만 다른 포트에서 수신 대기하도록 MongoDB 구성할 수 있습니다.
복제본 세트 에 연결할 때 연결 URI에 모든 복제본 세트 호스트를 포함합니다. 연결 문자열 의 각 호스트를 쉼표로 구분합니다. 이렇게 하면 호스트 중 하나에 연결할 수 없는 경우 라이브러리에서 연결을 설정할 수 있습니다.
여러 복제본 세트 호스트를 지정하는 방법을 학습 연결 대상 선택 가이드 의 복제본 세트 섹션을 참조하세요.
방화벽 구성
MongoDB 배포서버가 방화벽 뒤에서 호스팅되는 경우 MongoDB가 수신 대기하는 포트가 방화벽에서 열려 있는지 확인합니다. 배포가 기본 네트워크 포트에서 수신 대기하는 경우 방화벽에서 포트 27017
이 열려 있는지 확인합니다. 배포가 다른 포트에서 수신 대기하는 경우 포트가 방화벽에서 열려 있는지 확인합니다.
경고
MongoDB deployment에서 수신 대기하는 방화벽 포트인지 확실하지 않은 경우 방화벽 포트를 열지 마세요.
인증 오류
권한 부여 올바르게 구성되지 않은 경우 PHP 라이브러리가 MongoDB deployment 에 연결하지 못할 수 있습니다. 이러한 경우 라이브러리는 다음 메시지와 유사한 오류 메시지를 표시합니다.
Authentication failed.
다음 섹션에서는 문제 해결에 도움이 될 수 있는 방법을 설명합니다.
자격 증명 서식 확인
인증 문제의 가장 일반적인 원인 중 하나는 MongoDB 연결 URI의 잘못된 자격 자격 증명 형식입니다.
팁
연결 URI 사용에 대한 자세한 학습 은 MongoDB 클라이언트 생성 가이드 의 연결 URI를 참조하세요.
연결 URI에 사용자 이름 과 비밀번호가 포함된 경우 형식이 올바른지 확인하세요.
참고
사용자 사용자 이름 또는 비밀번호에 다음 문자가 표시되는 경우 를 퍼센트 인코딩해야 합니다.
: / ? # [ ] @
연결 URI에 퍼센트 인코딩된 사용자 이름 과 비밀번호를 사용합니다.
인증 메커니즘 확인
자격 증명 및 인증 메커니즘 이 올바른지 확인합니다. 연결 URI의 옵션에서 인증 자격 증명 지정할 수 있습니다.
$uriOptions
매개변수를 사용하여 인증 메커니즘 지정하는 경우 'authMechanism'
옵션을 올바른 메커니즘으로 설정하다 확인합니다. 다음 코드는 옵션 매개변수에 SCRAM-SHA-1
인증 메커니즘 지정하는 방법을 보여줍니다.
$uriOptions = [ 'username' => '<username>', 'password' => '<password>', 'authSource' => '<authentication database>', 'authMechanism' => 'SCRAM-SHA-1', ]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions, );
인증 메커니즘 지정에 대해 자세히 학습하려면 인증 메커니즘 섹션을 참조하세요.
사용자가 인증 데이터베이스에 있는지 확인
사용자 이름 및 비밀번호 기반 인증 방법을 사용하는 경우 사용자 이름을 인증 데이터베이스에 정의해야 합니다.
기본값 인증 데이터베이스 는 admin
데이터베이스 입니다. 인증 에 다른 데이터베이스 사용하려면 연결 URI에 authSource
옵션을 지정합니다.
다음 예시에서는 MongoDB가 users
데이터베이스를 인증 데이터베이스로 사용하도록 지시합니다.
$uri = 'mongodb://<username>:<password>@<hostname>:<port>/?authSource=users'; $client = new MongoDB\Client($uri);
DNS 확인 오류
PHP 라이브러리가 DNS 연결을 확인하지 못할 수 있습니다. 이 경우 다음 메시지와 유사한 오류 메시지가 나타날 수 있습니다.
No suitable servers found (`serverSelectionTryOnce` set): [Failed to resolve '<host>'].
라이브러리에서 이 오류를 보고하면 다음 섹션의 방법을 시도하여 문제를 해결합니다.
데이터베이스 배포 가용성 확인
MongoDB Atlas에 연결하는데 드라이버가 Atlas 데이터베이스 배포의 DNS 호스트를 찾을 수 없는 경우, 데이터베이스 배포가 일시 중지되거나 삭제될 수 있습니다.
데이터베이스 배포가 Atlas에 존재하는지 확인합니다. 클러스터가 일시 중지된 경우 Atlas UI 또는 Atlas 명령줄 인터페이스에서 클러스터를 재개할 수 있습니다.
클러스터를 재개하는 방법을 알아보려면 Atlas 설명서의 Resume One Cluster를 참조하세요.
네트워크 주소 확인
연결 URI의 네트워크 주소 또는 호스트 이름이 정확한지 확인합니다.
배포서버 MongoDB Atlas 에서 호스팅되는 경우 클러스터에 연결 튜토리얼을 따라 Atlas 연결 URI를 찾을 수 있습니다.