我使用MongoDB Atlas作为我的数据库。
我正在使用angular4和loopi作为api。
我的应用程序很好地连接到我的数据库。但是,当我尝试获取数据时,我收到此错误(我已使用dbname替换了我的dbname):
MongoError: user is not allowed to do action [find] on [dbname.$cmd]
如果我在AWS上使用本地mongodb客户端或mongodb实例,则查询工作正常。但是,使用地图集时,我收到此错误。
答案 0 :(得分:7)
我自己也有同样的错误。
如果您使用的是MongoDB NodeJS驱动程序的v.3.0,请参阅MikaS帖子,了解需要进行的MongoClient.connect更改。 https://stackoverflow.com/a/47662979/8775223
要将您的应用程序连接到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
答案 1 :(得分:3)
在Atlas群集中,选择Security
标签,按下按钮Edit
,然后向用户添加角色readWriteAnyDatabase
。请重试或刷新连接以查看结果。
答案 2 :(得分:1)
如果您使用v3.0 mongodb作为Node.js,您应该使用以下新API,以及驱动程序3.4及更早版本的MongoDB Atlas URI连接字符串:
MongoClient.connect(uri, function(err, client) {
console.log("Connected successfully to server");
const db = client.db(dbName);
});
答案 3 :(得分:1)
U!这花费了太多时间来修复!对于那些有同样问题的人。我必须两者都做:
1>我遇到此错误,我的问题是,在处理连接字符串时,我没有将数据库名称从“ test”更改为自己的数据库。 – Meier 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或更高版本。完成这些操作后,它终于可以工作了。
谢谢!
答案 4 :(得分:0)
https://docs.mlab.com/troubleshooting-atlas-connection-issues/#getlog-error
对于任何人,都会遇到user is not allowed to do action [getLog] on [admin.]
错误。必须明确赋予用户clusterMonitor
角色
答案 5 :(得分:0)
我通过直接获取集合对象并对其执行查找(和其他操作)来解决这个问题:
try {
mongoose.connect(MONGODB_URI, options)
const db = mongoose.connection
db.on("error", console.error.bind(console, "connection error:"))
db.once("open", async () => {
console.log("we're connected!")
const collectionObj = db.collection(ATLAS_COLLECTION)
const result = await collectionObj.find({}).toArray()
console.log(result)
}) } catch (error) { console.log({ error }) }
答案 6 :(得分:0)
我遇到了同样的问题以及如何解决它: 确保添加正确的 MongoDB URL: .转到集群 - 连接 .选择“连接您的应用程序” .复制Url(不要忘记填写你的MongoDB密码)
答案 7 :(得分:-1)
确保将用于从Mongo CLI连接到数据库的IP列入白名单。在项目的“网络访问”选项卡下执行此操作。