mongodbmongodb-compassaws-documentdb

MongoDB Compass throws authorization error but in-app console works


I'm trying to connect to a DocumentDB instance using MongoDB Compass. I'm not using root user but a user with read/write access to one specific database only. I'm specifying the authSource and specifying in the URI the database to connect to. When I connect I get a "Authorization Failure" error:

MongoDB compass Autorization Failure error

But the in-app mongosh console works just fine:

mongosh query working

If I type and delete in the searchbox, the database and collection appears in the GUI, but when I try to access any of them, it does nothing and in the developer console the following error is thrown:

Uncaught (in promise) TypeError: Invalid Version: undefined
    at new W (374.b19c47bda474faa622ac.renderer.js:2)
    at K (374.b19c47bda474faa622ac.renderer.js:2)
    at Function.ee [as gte] (374.b19c47bda474faa622ac.renderer.js:2)
    at i (index-4d5b3902.00103f1fccf1df6cf12c.renderer.js:1)
    at Object.Ye [as configureStore] (index-4d5b3902.00103f1fccf1df6cf12c.renderer.js:1)
    at f (index-7aeafcb2.6cd34d3932bd058955c3.renderer.js:1)
    at index-7aeafcb2.6cd34d3932bd058955c3.renderer.js:1
    at Array.forEach (<anonymous>)
    at b (index-7aeafcb2.6cd34d3932bd058955c3.renderer.js:1)
    at index-7aeafcb2.6cd34d3932bd058955c3.renderer.js:1

In the MongoDB Compass logs the only error I can see is:

{
    "msg": "Driver command failed",
    "attr": {
        "address": "xxxxxxx:27017",
        "serverConnectionId": 1,
        "duration": 215,
        "commandName": "getParameter",
        "failure": "Feature not supported: getParameter"
    }
}

Is this some kind of MongoDB Compass bug? Is it an incompatibility between Compass and DocumentDB? Or may it be something related to permissions added to the user role I'm trying to authenticate with?

Thanks all.


Solution

  • Check this page: https://www.mongodb.com/docs/compass/current/connect/required-access/ I believe you'll need the clusterMonitor role for the restricted user you're using.