Mongodb MongoError:不允许用户执行操作
我使用MongoDB Atlas作为我的数据库 我使用angular4和环回作为api 我的应用程序可以很好地连接到数据库。但是,当我尝试获取数据时,会出现以下错误(我已将我的dbname替换为dbname):Mongodb MongoError:不允许用户执行操作,mongodb,angular,loopback,Mongodb,Angular,Loopback,我使用MongoDB Atlas作为我的数据库 我使用angular4和环回作为api 我的应用程序可以很好地连接到数据库。但是,当我尝试获取数据时,会出现以下错误(我已将我的dbname替换为dbname): 如果我在AWS上使用本地mongodb客户机或mongodb实例,查询工作正常。但是,当使用atlas时,我会出现这个错误。我自己也有同样的错误 如果您使用的是MongoDB NodeJS驱动程序的v.3.0,请参阅MikaS post以了解需要进行的MongoClient.conne
如果我在AWS上使用本地mongodb客户机或mongodb实例,查询工作正常。但是,当使用atlas时,我会出现这个错误。我自己也有同样的错误
- 如果您使用的是MongoDB NodeJS驱动程序的v.3.0,请参阅MikaS post以了解需要进行的MongoClient.connect更改。
- 要将应用程序连接到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
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碎片- 0&authSource=admin
MongoClient.connect(uri, function(err, client) {
console.log("Connected successfully to server");
const db = client.db(dbName);
});
在Atlas集群中,选择
Security
选项卡,按下按钮Edit
,然后向用户添加角色readWriteAnyDatabase
。请重试或刷新连接以查看结果。啊!这花了太多的时间来修复!对于那些有同样问题的人。我必须同时做这两件事:
1> 我有这个错误,我的问题是在处理连接字符串时没有将数据库名称从“test”更改为我自己的数据库梅尔12月8日17时12分 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碎片- 0&authSource=admin“ 此外,在Atlas中,您必须指定较旧的驱动程序2.2.12或更高版本。在做了这些事情之后,它终于起作用了 谢谢大家
对于获得
的任何人,不允许用户在[admin.]上执行操作[getLog]
错误。必须明确地给用户clusterMonitor
角色确保将用于从Mongo CLI连接到DB的IP列入白名单。在“项目网络访问”选项卡下执行此操作。我通过直接获取集合对象并对其执行查找(和其他操作)来解决此问题:
我也有同样的问题,我是如何解决的: 确保添加了正确的MongoDB URL: . 转到群集-连接 . 选择“连接您的应用程序”
. 复制Url(不要忘记填写您的MongoDB密码)我出现了这个错误,我的问题是在处理连接字符串时,我没有将数据库名称从“test”更改为我自己的数据库。您解决了这个问题吗?您为我节省了大量寻找解决方案的时间。非常感谢您最后用清晰的语言回答了一些需要做的事情!我使用的是shell 3.6或更高版本的命令
MongoClient.connect(uri, function(err, client) {
console.log("Connected successfully to server");
const db = client.db(dbName);
});
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 }) }