Search code examples
mongodbherokumlabmongodb-atlasrobo3t

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.


Solution

  • 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)