Esta página oferece soluções potenciais para problemas que você pode encontrar ao usar a biblioteca PHP para se conectar a uma implantação do MongoDB .
Observação
Esta página aborda apenas problemas de conexão. Se você encontrar outros problemas ao usar o MongoDB ou a biblioteca PHP, acesse os seguintes recursos:
A páginaProblemas e ajuda do para obter informações sobre como reportar bugs, contribuir para a biblioteca e encontrar mais recursos
Os fóruns da MongoDB Community para perguntas, discussões ou suporte técnico geral
Erros de conexão do servidor
Quando ocorre um problema ao tentar se conectar a um servidor, a biblioteca PHP retorna uma mensagem de erro. Se esse erro se assemelhar à seguinte mensagem, isso indica que a biblioteca não pode se conectar a um sistema do MongoDB :
No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling hello on 'localhost:27017']
As seções a seguir descrevem métodos que podem ajudar a resolver o problema.
Verifique o URI de conexão
Verifique se o nome do host e o número da porta no URI de conexão estão corretos. Na mensagem de erro de amostra, o nome do host é 127.0.0.1
e a porta é 27017
. O valor de porta padrão para um sistema do MongoDB Server é 27017
, mas você pode configurar o MongoDB para escutar em outra porta.
Ao conectar a um conjunto de réplicas, inclua todos os hosts do conjunto de réplicas em seu URI de conexão. Separe cada um dos hosts na string de conexão com uma vírgula. Isso permite que a biblioteca estabeleça uma conexão se um dos hosts não estiver acessível.
Para saber como especificar vários hosts de conjunto de réplicas, consulte a seção Conjuntos de réplicas do guia Escolher um destino de conexão.
Configurar firewall
Se sua implantação do MongoDB estiver hospedada atrás de um firewall, certifique-se de que a porta na qual o MongoDB escuta esteja aberta no firewall. Se sua implantação escutar na porta de rede padrão, verifique se a porta 27017
está aberta no firewall. Se sua implantação escutar em uma porta diferente, certifique-se de que a porta esteja aberta no firewall.
Aviso
Não abra uma porta de firewall, a menos que tenha certeza de que é aquela que sua implantação do MongoDB escuta.
Erros de autenticação
A biblioteca PHP pode não conseguir se conectar a uma implementação do MongoDB se a autorização não estiver configurada corretamente. Nesses casos, a biblioteca gera uma mensagem de erro semelhante à seguinte mensagem:
Authentication failed.
As seções a seguir descrevem métodos que podem ajudar a resolver o problema.
Verifique a formatação das credenciais
Uma das causas mais comuns de problemas de autenticação é a formatação de credenciais inválidas no URI de conexão do MongoDB .
Dica
Para saber mais informações sobre o uso de URIs de conexão, consulte URI de conexão no guia Criar um cliente MongoDB.
Se o seu URI de conexão contiver um nome de usuário e senha, certifique-se de que eles estejam formatados corretamente.
Observação
Você deve codificar os seguintes caracteres se eles aparecerem em seu nome de usuário ou senha:
: / ? # [ ] @
Use seu nome de usuário e senha codificados por porcentagem em seu URI de conexão.
Verificar o mecanismo de autenticação
Verifique se as credenciais e o mecanismo de autenticação estão corretos. Você pode especificar suas credenciais de autenticação nas opções do URI de conexão.
Se você utilizar o parâmetro $uriOptions
para especificar um mecanismo de autenticação, certifique-se de configurar a opção 'authMechanism'
para o mecanismo correto. O código abaixo mostra como especificar o mecanismo de autenticação SCRAM-SHA-1
em um parâmetro de opções:
$uriOptions = [ 'username' => '<username>', 'password' => '<password>', 'authSource' => '<authentication database>', 'authMechanism' => 'SCRAM-SHA-1', ]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions, );
Para saber mais sobre como especificar mecanismos de autenticação, consulte a seção Mecanismos de autenticação.
Verificar se o usuário está no banco de dados de autenticação
Se utilizar um método de autenticação baseado em nome de usuário e senha, o nome de usuário deve ser definido no banco de dados de autenticação.
O banco de dados de autenticação padrão é o banco de dados admin
. Para usar outro banco de dados de autenticação, especifique a opção authSource
no URI de conexão.
O exemplo a seguir instrui o MongoDB a usar o banco de dados users
como o banco de dados de autenticação:
$uri = 'mongodb://<username>:<password>@<hostname>:<port>/?authSource=users'; $client = new MongoDB\Client($uri);
Erros de resolução de DNS
A biblioteca PHP pode não conseguir resolver sua conexão DNS. Quando isso acontece, você pode receber uma mensagem de erro semelhante à seguinte:
No suitable servers found (`serverSelectionTryOnce` set): [Failed to resolve '<host>'].
Se a biblioteca relatar esse erro, tente os métodos nas seções a seguir para resolver o problema.
Verifique a disponibilidade de implantação de banco de dados
Se você estiver se conectando ao MongoDB Atlas e seu driver não conseguir encontrar o host DNS da implantação de banco de dados Atlas, a implantação de banco de dados poderá ser pausada ou excluída.
Certifique-se de que o sistema de banco de dados exista no Atlas. Se o cluster estiver pausado, você poderá retomar o cluster na UI do Atlas ou na interface da linha de comando do Atlas.
Para saber como retomar um cluster, consulte Retomar um cluster na documentação do Atlas.
Verifique os endereços de rede
Verifique se os endereços de rede ou nomes de host em seu URI de conexão estão corretos.
Se a sua implantação estiver hospedada no MongoDB Atlas, você poderá seguir o tutorial Conectar ao Seu Cluster para localizar seu URI de conexão do Atlas.