Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 693
wowkin2 Avatar asked Oct 26 '20 22:10

wowkin2


2 Answers

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
like image 44
Nguyễn Phương Đông Avatar answered Oct 09 '22 03:10

Nguyễn Phương Đông


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)

like image 86
wowkin2 Avatar answered Oct 09 '22 05:10

wowkin2