I think the problem here is you're accessing the system without the listDatabases privilege. There isn't a role that only confers that permission so I suggest you create a new role that has only that privilege. From there, you can add that role to the appropriate users. For example:
use admin db.createRole( { role: "schemaAccessor", privileges: [ { resource: { cluster: true }, actions: [ "listDatabases" ] } ], roles: [] } ) use mydbname db.grantRolesToUser( "myuid", [ { role: "listDatabases", db: "admin" } ]) You may also need to confer the listCollections privilege for each database that you want to list collections for. Let me know if this helps resolve your issue. Thanks, Jacques