wowkin2
wowkin2

Reputation: 6355

Robomongo: Cannot connect to replica set. Set's primary is unreachable

I'm migrating mLab from Heroku to MongoDB Atlas. As one of steps I want to check if there is a connectivity to newly created cluster. I'm used Robo3T (formerly Robomongo) for Heroku mLab instances. But it doesn't work with Atlas. I'm getting following error when creating connection from URL:

Cannot connect to replica set "SampleProject"[cluster-abcd12ef-shard-00-00.a0b1c.mongodb.net:27017]. 
Set's primary is unreachable.

Reason:
Failed to initialize MongoWorker. Reason: connect failed

Tried to adjust settings, but everything looks correct there, like for Heroku, the only host and port are different.

Also looked on similar questions and on GitHub isssues but nothing helped.

Upvotes: 11

Views: 25248

Answers (6)

JimmyTheCode
JimmyTheCode

Reputation: 5694

For me I needed to go into the Edit section of the Connection:

enter image description here

Then under the Authentication tab:

enter image description here

Paste my password into the password input:

password input

The passwords in my json files were encrypted, so I needed the unencrypted password directly from Atlas

Upvotes: 0

kroe
kroe

Reputation: 1126

After doing import "From URI" i had to go TLS -> "Authentication Method" and select "Self-signed Certificate".

I didn't have the same problem when connecting from the MongoDB extension on VSCode.

Upvotes: 1

Boaz
Boaz

Reputation: 20230

Check your username and password!

tl;dr

It seems Robo 3T 1.4.3 returns the Cannot connect to replica set... Set's primary is unreachable error also for authentication errors. Double check your user credentials.

Details

In the past, all the above excellent answers have helped me resolve this error message. However, recently I encountered an Atlas cluster that seemed immune to all workarounds. I finally gave up and tried with the "official" MongoDB Compass client that Atlas promotes. This client also returned an error, but a different and far more useful one:

bad auth : Authentication failed.

Suspecting an incorrect password, I generated a new password for the user in Atlas and updated it in Robo 3T. After this Robo successfully connected to the DB.

Upvotes: 1

Pankaj Shinde
Pankaj Shinde

Reputation: 73

Make sure you have whitelisted your IP address on mongodb cloud portal under Network Access.

Upvotes: 5

If anyone getting this error while using Robo3T version 1.4.4, we can resolve this issue by update robo3t.json file (enable logs and you can see where this file localed)

By enable Logs, you will see where settings saved via message starts with Info: Settings saved to: {robo3t.json_path}

  • Paste your URI as normal, then click From URI as normal, then Save.
  • Close Robo3T (important)
  • Open robo3t.json file using some text editor.
  • Inside connections scope, lookup your connection just created from step above, find allowInvalidCertificates property inside ssl object, change value from false to true then save the file
  • Open Robo3T then connect to the connection, it should connect normally

Upvotes: 9

wowkin2
wowkin2

Reputation: 6355

First of all, check if you are using latest Robo3T. MongoDB Atlas uses mongodb+srv:// protocol, that was not supported some time before.

After that please go by following check-list:

  • Use import From SRV by copy-pasting URL from MongoDB Atlas;
  • MongoDB Atlas is using Replica Sets even for free Sandbox (Atlas M0) accounts. So during creation ensure that you used that type;
  • Fill or check all cluster members;
  • Set Name should be set.

important differences on Authentication tab:

  • Database should be admin not like database name (used on Heroku),
  • Auth Mechanism should be SCRAM-SHA-1
  • Check Manually specify visible databases and type there admin,<you database name from Heroku>

on TLS tab:

  • Check Use TLS protocol
  • Authentication method - Self-signed Certificate

Now it should work.

P.S. Previously, I also had problems with having database same like on Heroku with same db-name and user-name, also I thought that Auth Mechanism should be MONGODB-CR. But that didn't work.

P.P.S. If you don't see Manually specify visible databases - then please check if you have the latest version (1.4.+) of Robo3T (previously known as Robomongo)

Upvotes: 32

Related Questions