web-dev-qa-db-ja.com

MongoError:ユーザーはアクションを実行できません

MongoDB Atlasをデータベースとして使用しています。

私はapiとしてloopbackでangular4を使用しています。

アプリケーションはデータベースに正常に接続します。ただし、データを取得しようとすると、次のエラーが表示されます(dbnameをdbnameに置き換えました)。

MongoError: user is not allowed to do action [find] on [dbname.$cmd]

AWSでローカルmongodbクライアントまたはmongodbインスタンスを使用している場合、クエリは正常に機能します。ただし、アトラスを使用すると、このエラーが発生します。

11
Janpan

私自身も同じエラーがありました。

  • MongoDB NodeJSドライバーのv.3.0を使用している場合、行う必要があるMongoClient.connectの変更については、MikaSの投稿を参照してください。 https://stackoverflow.com/a/47662979/877522

  • アプリケーションを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
    
8
kostjakon

Atlasクラスターで、[Security]タブを選択し、ボタン[Editを押してから、ロールreadWriteAnyDatabaseをユーザーに追加します。再試行するか、接続を更新して結果を確認してください。

3
aviit

うん!これは修正に時間がかかりすぎました!同じ問題を抱えている人のために。私は両方をしなければなりませんでした:

1>このエラーが発生しました。問題は、接続文字列をコピーするときにデータベース名を「test」から自分のデータベースに変更しなかったことです。 –マイヤー17年12月8日12:43で

2>

「mongodb://:@ cluster0-shard-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&authSource = admin "

また、Atlasでは、古いドライバー2.2.12以降を指定する必要があります。これらのことを行った後、最終的に機能しました。

皆さんありがとう!

1
Michael B

Node.jsにv3.0 mongodbを使用している場合は、次のように新しいAPIを使用し、ドライバー3.4以前ではMongoDB Atlas URI接続文字列を使用する必要があります。

MongoClient.connect(uri, function(err, client) {
  console.log("Connected successfully to server");

  const db = client.db(dbName);
});
1
itacode