MongoError: пользователю не разрешено делать действия
Я использую MongoDB Atlas в качестве моей базы данных.
Я использую angular4 с loopback как api.
Мое приложение прекрасно подключается к моей базе данных. Однако, когда я пытаюсь получить данные, я получаю эту ошибку (я заменил свое имя dbname на dbname):
MongoError: user is not allowed to do action [find] on [dbname.$cmd]
Запрос работает нормально, если я использую локальный клиент mongodb или экземпляр mongodb на AWS. Однако при использовании атласа я получаю эту ошибку.
Ответы
Ответ 1
У меня была такая же ошибка.
-
Если вы используете v.3.0 драйвера MongoDB NodeJS, обратитесь к сообщению MikaS для изменений MongoClient.connect, которые необходимо выполнить.
fooobar.com/questions/420195/...
-
Чтобы подключить ваше приложение к Atlas MongoDB, используйте драйвер 3.4, например.
mongodb://<USERNAME>:<PASSWORD>@cluster0-shard-00-00-
rb899.mongodb.net:27017,cluster0-shard-00-01-
rb899.mongodb.net:27017,cluster0-shard-00-02-
rb899.mongodb.net:27017/<DBNAME>?ssl=true&replicaSet=Cluster0-shard-
0&authSource=admin
Ответ 2
В кластере Atlas выберите вкладку Security
, нажмите кнопку Edit
, затем добавьте роль readWriteAnyDatabase
для пользователя. Попробуйте еще раз или обновите соединение, чтобы увидеть результат.
Ответ 3
Если вы используете v3.0 mongodb для Node.js, вы должны использовать новый API следующим образом, а строку соединения MongoDB Atlas URI для драйвера 3.4 и ранее:
MongoClient.connect(uri, function(err, client) {
console.log("Connected successfully to server");
const db = client.db(dbName);
});
Ответ 4
Тьфу! Это заняло слишком много времени, чтобы исправить! Для тех из вас, у кого такая же проблема. Я должен был сделать оба:
1> У меня была эта ошибка, моя проблема заключалась в том, что я не изменил имя базы данных с "test" на собственную базу данных при копировании строки подключения. - Мейер, 8 декабря 17 года в 12:43
2>
"MongoDB://: @cluster0-осколок-00-00- rb899.mongodb.net:27017,cluster0-shard-00-01- rb899.mongodb.net:27017,cluster0-shard-00-02- rb899.mongodb.net:27017/?ssl=true&replicaSet=Cluster0-shard- 0 & ампы; = администратор авторизация источник "
Кроме того, в Atlas вы должны указать более старый драйвер 2.2.12 или новее. После этого все наконец заработало.
Спасибо всем!