Esta página descreve problemas comuns de conexão e possíveis soluções.
To learn more about connecting to an Atlas cluster, see the Get Started with Atlas tutorial.
Observação
Se você é um cliente corporativo em busca de suporte, registre um ticket. Para obter suporte da comunidade, visite os Recursos da comunidade do MongoDB.
Você pode usar o assistente inteligente para ajudar a depurar seus erros de conexão.
O botão Cluster Connect está desabilitado
O botão Connect do seu cluster pode estar desabilitado se o cluster estiver no estado de provisionamento. Seu cluster precisa de provisionamento quando for implantado pela primeira vez. Os clusters também devem passar por provisionamento quando você os dimensiona para cima ou para baixo.
O botão Connect será habilitado após o provisionamento do cluster pelo Atlas.
Para clusters gratuitos, o provisionamento leva menos de 15 segundos.
Para clusters Flex e clusters dedicados, o provisionamento pode levar até 10 minutos.
Conectando um endereço IP que não está na lista de acesso IP
Antes de se conectar ao seu cluster do Atlas, verifique se você adicionou o endereço IP do seu host à lista de acesso IP do projeto do seu cluster. O Atlas permite conexões de cliente somente a partir de endereços IP e intervalos de endereços CIDR na Lista de acesso IP.
Falha na autenticação do cluster
Para se conectar ao Atlas, você deve autenticar com um usuário do banco de dados MongoDB. Para criar um usuário de banco de dados para seu cluster, consulte Configurar usuários do banco de dados.
Possíveis soluções
Se você criou um usuário e está com problemas para autenticar, tente o seguinte:
Verifique se você está usando o nome de usuário e a senha corretos para o usuário do banco de dados e se está se conectando ao cluster correto.
Verifique se você está especificando o banco de dados correto do
authSourceem sua connection string.If you have a special character in your password, see Special characters in connection string password.
Muitas conexões abertas em seu cluster
O Atlas define limites para conexões de entrada simultâneas para um cluster. Para clusters, isso se baseia na camada do cluster. Se você tentar se conectar quando estiver nesse limite, o MongoDB exibirá um erro informando connection refused because too many open connections.
Para uma comparação detalhada das camadas do cluster e suas conexões simultâneas máximas, consulte Limites de conexão e camada de cluster.
Possíveis soluções
Feche todas as conexões abertas ao seu cluster que não estejam em uso no momento.
Escale seu cluster para um nível mais alto para permitir mais conexões simultâneas.
Reinicie seu aplicativo.
To prevent this issue in the future, consider using the
maxPoolSizeconnection string option to limit the number of connections in the connection pool.
Para saber como corrigir esse problema, consulte Corrigir problemas de conexão.
Desempenho degradado em clusters fragmentados durante picos nas contagens de conexões
O Atlas pode gerar uma connection string SRV otimizada para clusters fragmentados por meio dos balancers de carga do seu serviço de private endpoints. Quando você utiliza uma cadeia de conexão otimizada, o Atlas limita o número de conexões por mongos entre seu aplicativo e seu cluster fragmentado. As conexões limitadas por mongos melhoram o desempenho durante picos nas contagens de conexões.
Para saber mais sobre strings de conexão otimizadas para clusters fragmentados por trás de um ponto de extremidade privado, consulte Como posso otimizar o desempenho da conexão para clusters fragmentados usando pontos de extremidade privados?.
Tentando se conectar por trás de um firewall
Conectando-se à interface de usuário do Atlas
O Atlas utiliza um CDN para servir conteúdo rapidamente. Se sua organização usa um firewall, adicione os seguintes hospedar de CDN do Atlas à lista de permissões do firewall para evitar problemas de acesso à IU do Atlas:
https://assets.mongodb-cdn.com/https://downloads.mongodb.com/(necessário para a funcionalidade Data Explorer )
Conexão a um cluster
O cluster do Atlas opera na porta 27017. Você deve conseguir acessar essa porta para se conectar aos clusters. Além disso, certifique-se de que as portas apropriadas estejam abertas para o seguinte:
- Nos clusters fragmentados, conceda acesso à porta 27016.
Você pode verificar sua capacidade de acessar uma porta usando o Outgoing port tester de terceiros.
Exemplo
Para verificar sua capacidade de alcançar a porta 27017, visite http://portquiz.net:27017.
Se não conseguir acessar essas portas, verifique as configurações do firewall do sistema e certifique-se de que elas não estejam bloqueando o acesso a essas portas.
Disponibilidade do cluster
Se você estiver usando uma string de conexão mongodb+srv:// e seu driver ou shell não conseguir encontrar o host do DNS do cluster do Atlas, o cluster poderá ser pausado ou excluído. Verifique se o cluster existe. Se for um cluster pausado, você poderá retomar o cluster, se necessário.
Observação
O Atlas pausa automaticamente os clusters gratuitos ociosos (anteriormente conhecido como M0) após 30 dias sem conexões.
Solução de problemas do MongoDB Compass
Se você usar o MongoDB Compass para se conectar ao cluster e tiver problemas, consulte:
Conexão recusada usando a cadeia de conexão SRV nesta seção.
Erros de conexão do Compass na documentação do MongoDB Compass.
If you use a self-managed X.509 certificate or an auto-generated X.509 certificate managed by Atlas to authenticate to the MongoDB database, when you connect to MongoDB Compass, you must:
No MongoDB Compass, escolha Fill in connection fields individually.
No menu suspenso Authentication, selecione
X.509.Selecione More Options.
No menu suspenso SSL, selecione Server and Client Validation.
Adicione o mesmo caminho para o certificado gerenciado Atlas baixado ou o certificado autogerenciado (dependendo do qual você utiliza) para cada um destes campos: Certificate Authority, Client Certificate e Client Private Key.
To learn more, see Connect to MongoDB in the MongoDB Compass documentation.
Problemas com a cadeia de conexão
Formato de cadeia de conexão incorreto
The connection string format you use to connect to Atlas depends on several factors, including:
Your
mongoshversion. To learn more, see Connect to a Cluster via mongosh.Sua versão do driver. Para saber mais, consulte Conectar-se a um cluster por meio de bibliotecas de clientes.
Verifique sua cadeia de conexão em um ambiente de teste antes de colocá-la em produção.
Caracteres especiais na senha da cadeia de conexão
Se sua senha incluir caracteres especiais e você estiver usando sua senha no URI de cadeia de conexão, codifique os caracteres especiais.
Ao tentar atualizar uma senha com um caractere especial que requer codificação percentual, a seguinte mensagem de erro aparece:
This password contains special characters which will be URL-encoded.
Observação
Os seguintes caracteres e o caractere de espaço devem ser convertidos usando a codificação percentual se incluídos em um nome de usuário ou senha:
: / ? # [ ] @ ! $ & ' ( ) * , ; = %
Por exemplo, se a sua senha no texto sem formatação for p@ssw0rd'9'!, você precisará codificar sua senha como:
p%40ssw0rd%279%27%21
➤ Use o menu suspenso Selecione a linguagem para definir a linguagem do exemplo de codificação nesta seção.
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "net/url" 7 8 "go.mongodb.org/mongo-driver/bson" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 ) 12 13 func main() { 14 username := "<username>" 15 password := "<password>" 16 cluster := "<clusterName>" 17 authSource := "<authSource>" 18 authMechanism := "<authMechanism>" 19 20 uri := "mongodb+srv://" + url.QueryEscape(username) + ":" + 21 url.QueryEscape(password) + "@" + cluster + 22 "/?authSource=" + authSource + 23 "&authMechanism=" + authMechanism 24 25 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) 26 if err != nil { 27 panic(err) 28 } 29 defer client.Disconnect(context.TODO()) 30 31 collection := client.Database("<dbName>").Collection("<collName>") 32 33 cursor, err := collection.Find(context.TODO(), bson.D{}) 34 if err != nil { 35 panic(err) 36 } 37 38 var results []bson.D 39 if err = cursor.All(context.TODO(), &results); err != nil { 40 panic(err) 41 } 42 for _, result := range results { 43 fmt.Println(result) 44 } 45 }
1 import com.mongodb.client.MongoClient; 2 import com.mongodb.client.MongoClients; 3 import com.mongodb.client.MongoCollection; 4 import com.mongodb.client.MongoDatabase; 5 6 import org.bson.Document; 7 import java.net.URLEncoder; 8 9 public class Encoding { 10 11 public static void main(String [] args){ 12 13 try{ 14 String username = URLEncoder.encode("<username>", "UTF-8"); 15 String password = URLEncoder.encode("<password>", "UTF-8"); 16 String cluster = "<clusterName>"; 17 String authSource = "<authSource>"; 18 String authMechanism = "<authMechanism>"; 19 20 String uri = "mongodb+srv://" + username + ":" + password + "@" + cluster + 21 "/?authSource=" + authSource + "&authMechanism=" + authMechanism; 22 23 MongoClient mongoClient = MongoClients.create(uri); 24 25 MongoDatabase database = mongoClient.getDatabase("<dbName>"); 26 MongoCollection<Document> collection = database.getCollection("<collName>"); 27 28 collection.find().forEach(doc -> System.out.println(doc.toJson())); 29 30 } catch(Exception e){ 31 System.err.println(e.getCause()); 32 33 } 34 } 35 }
1 const { MongoClient } = require("mongodb"); 2 3 const username = encodeURIComponent("<username>"); 4 const password = encodeURIComponent("<password>"); 5 const cluster = "<clusterName>"; 6 const authSource = "<authSource>"; 7 const authMechanism = "<authMechanism>"; 8 9 let uri = 10 `mongodb+srv://${username}:${password}@${cluster}/?authSource=${authSource}&authMechanism=${authMechanism}`; 11 12 const client = new MongoClient(uri); 13 14 async function run() { 15 try { 16 await client.connect(); 17 18 const database = client.db("<dbName>"); 19 const ratings = database.collection("<collName>"); 20 21 const cursor = ratings.find(); 22 23 await cursor.forEach(doc => console.dir(doc)); 24 } finally { 25 await client.close(); 26 } 27 } 28 run().catch(console.dir);
1 import pymongo 2 from urllib.parse import quote_plus 3 4 username = quote_plus('<username>') 5 password = quote_plus('<password>') 6 cluster = '<clusterName>' 7 authSource = '<authSource>' 8 authMechanism = '<authMechanism>' 9 10 uri = 'mongodb+srv://' + username + ':' + password + '@' + cluster + '/?authSource=' + authSource + '&authMechanism=' + authMechanism 11 12 client = pymongo.MongoClient(uri) 13 14 result = client["<dbName"]["<collName>"].find() 15 16 # print results 17 for i in result: 18 print(i)
Importante
Do not encode special characters in your password if you are using your password outside of a connection string URI (for example, pasting it into mongosh).
Cadeia de conexão incompatível com a versão do driver
If you see this error message, your driver is likely out of date. For instructions on updating your driver, refer to your specific Driver Documentation.
O DNS do provedor de serviços de internet bloqueia a cadeia de conexão
When you use the DNS seed list connection string format to connect to Atlas, you might see the following error:
DNSHostNotFound: Failed to look up service "<MongoDB service name>"
Esse erro pode ocorrer ao usar o servidor DNS padrão que seu ISP fornece. Esse servidor DNS pode não suportar pesquisas SRV que o formato de string de conexão da lista de sementes do DNS usa.
Para resolver o problema, você pode tentar alterar sua configuração de DNS para usar um servidor DNS público.
Exemplo
Você pode configurar as configurações da sua rede para usar o Google Public DNS em vez dos servidores DNS do seu ISP.
Depois de atualizar as configurações de rede para usar um servidor DNS público, conecte-se ao cluster.
Erro de string de conexão com FERRAMENTAS de banco de dados
You might see the following error when using the DNS seed list connection string format (mongodb+srv://) to connect to Atlas from one of the MongoDB Database Tools (mongodump, mongorestore, etc):
lookup nta8e.mongodb.net on 123.45.67.8:27017: cannot unmarshal DNS message
Em caso afirmativo, use uma das seguintes opções de conexão:
Use the
--urioption with a non-SRV connection string (mongodb://).Use a opção
--hostpara especificar o hospedar ao qual se conectar.
Conexão recusada usando cadeia de conexão SRV
When using the DNS seed list connection string format (mongodb+srv://) with a driver or Compass, you may receive in the following error:
Error: querySrv ECONNREFUSED _mongodb._tcp.<SRV Record>
Para solucionar esse erro, conclua as etapas a seguir.
Encontre o nome DNS SRV
Siga as etapas 1a6 em Conectar seu aplicativo.
Selecione o Driver e a Versão.
Sob Use this connection string in your application, o nome do host SRV aparece na string de conexão
mongodb+srv://. É a parte do nome do host que termina com.mongodb.net.Por exemplo,
cluster0.dfget.mongodb.net.
Encontre os nomes de host e números de porta dos nós
No mesmo modal do Connect:
Em Use this connection string in your application, desative a opção SRV Connection String.
A string de conexão padrão (
mongodb://) é exibida, listando o nome do host e o número da porta de cada nó.A string de conexão do cluster pode ter uma variedade de nomes de host e portas, dependendo da topologia e do método de conexão. Para aprender mais sobre pontos de extremidade privados, consulte Configurar endpoints privados.
Teste a conectividade de rede básica
Execute os seguintes comandos em um terminal ou prompt de comando no servidor de aplicação que está enfrentando o problema:
Teste de resolução DNS SRV
Para Linux ou macOS, execute o seguinte comando:
dig SRV _mongodb._tcp.<DNS SRV name> Para Windows, execute o seguinte comando:
nslookup -debug -q=SRV _mongodb._tcp.<DNS SRV name> Na SEÇÃO DE RESPOSTA da resposta, você deve ver um resultado para cada um dos nós no cluster. Por exemplo:
;; ANSWER SECTION: _mongodb._tcp.gcluster0.dfget.mongodb.net. 60 IN SRV 0 0 27017 cluster0-shard-00-00.dfget.mongodb.net. _mongodb._tcp.gcluster0.dfget.mongodb.net. 60 IN SRV 0 0 27017 cluster0-shard-00-01.dfget.mongodb.net. _mongodb._tcp.gcluster0.dfget.mongodb.net. 60 IN SRV 0 0 27017 cluster0-shard-00-02.dfget.mongodb.net. Testes de resolução de nome de host de nó DNS
Para cada nome de host no cluster:
Para Linux ou macOS, execute o seguinte comando:
dig <Node Hostname> Para Windows, execute o seguinte comando:
nslookup -debug -q=A <Node Hostname> Na SEÇÃO DE RESPOSTA da resposta, você deve ver o endereço IP para o qual o nome de host do DNS foi resolvido. Por exemplo:
;; ANSWER SECTION: cluster0-shard-00-00.ag9in.mongodb.net. 60 IN A 10.10.10.10 Teste de ping
Observação
As solicitações ICMP podem ser bloqueadas pelo provedor de nuvem em conexões de pontos de extremidade privados.
Para cada nome de host no cluster:
Para Linux ou macOS, execute o seguinte comando:
ping -c 10 <Node Hostname> Para Windows, execute o seguinte comando:
ping /n 10 <Node Hostname> Revise a saída para verificar se há perda de pacotes e tempo de ida e volta (RTT). Alta perda de pacotes ou latência pode indicar problemas de rede entre seu servidor e os nós de cluster.
Teste de conexão de rede de ponta a ponta
Para Linux ou macOS, execute o seguinte comando:
nc -zv <Node Hostname> <Node Port Number> Para Windows, execute o seguinte comando:
Test-NetConnection -Port <Node Port Number> -InformationLevel "Detailed" -ComputerName "<Node Hostname>"
Resolver o problema
Depois de executar os testes na etapa anterior, use a orientação a seguir para resolver o erro de conexão com base na falha do teste:
Teste de resolução DNS SRV falha: Seu resolvedor DNS não oferece suporte a pesquisas de registro SRV, ou o tráfego DNS de saída está bloqueado. Experimente uma das seguintes opções:
Switch to the non-SRV connection string format (
mongodb://) instead ofmongodb+srv://. To get the non-SRV connection string, open the Connect modal in Atlas, select your driver and version, and turn off the SRV Connection String toggle under Use this connection string in your application.Configure your network to use a public DNS server that supports SRV lookups, such as Google Public DNS.
O teste de resolução de nome de host do nó DNS falha: o resolvedor de DNS não consegue resolver os nomes de host de nós individuais. Se você usar pontos de extremidade privados, verifique se a configuração de DNS do endpoint privado está correta.
Falha no teste de ping: o tráfego CIMP pode estar bloqueado por um firewall ou pelo provedor de nuvem. Isso não indica necessariamente um problema de conexão TCP. Faça o teste de conexão de rede ponto a ponto para verificar a conectividade TCP na porta
27017.O teste de conexão de rede de ponta a ponta falha: um firewall ou política de rede está bloqueando o acesso à porta
27017nos nomes de host do nó. Verifique o seguinte:Adicione o endereço IP do servidor de aplicativo à lista de acesso IPdo cluster.
Permita conexões TCP de saída na porta
27017por meio do firewall.
All tests pass but the error persists: The issue may be in your driver version. Older driver versions might not correctly support the SRV connection string format. Update your driver to the latest version. You can also switch to the standard (non-SRV) connection string format (
mongodb://) by turning off the SRV Connection String toggle under Use this connection string in your application in the Connect modal.