我正在尝试连接到我的 mongoDB atlas 集群,但身份验证失败。 我可以从 Studio 3T 等客户端和 Mongo shell 进行连接。
这是我的连接 URI:
var conn = mongoose.connect("mongodb://<user>:<password>@xxx-shard-00-00-kqmqb.mongodb.net:27017,xxx-shard-00-01-kqmqb.mongodb.net:27017,xxx-shard-00-02-kqmqb.mongodb.net:27017/myDB?ssl=true&replicaSet=xxxCluster-shard-0&authSource=admin")
我从 atlas 控制台复制了这个。 我使用的是 Mongoose 4.9.7,它使用 MongoDB 2.2.26,所以我使用这些模块的最新版本。
我得到的错误如下:
MongoError: authentication fail
知道这可能是什么吗?
最佳答案
找到了解决方案。我的密码有特殊字符,所以我必须对其进行正确编码。将实现更改为
var f = require('util').format;
var user = encodeURIComponent('user');
var password = encodeURIComponent('p@ssw0rdWithSpecialCharacter');
var url = f("mongodb://%s:%s@xxx-shard-00-00-kqmqb.mongodb.net:27017,xxx-shard-00-01-kqmqb.mongodb.net:27017,xxx-shard-00-02-kqmqb.mongodb.net:27017/myDB?ssl=true&replicaSet=xxx-shard-0&authSource=admin",user,password);
var conn = mongoose.connect(url);
关于node.js - Node.JS 对 MongoDB Atlas 授权失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43780561/