如何使用NodeJS以超级用户身份连接到另一个MongoDB数据库?

解决这个问题的工作很好:

而不是做:

$ mongo my_db_name -u superuser -p 1234 

我做

 $ mongo admin -u superuser -p 1234 # connecting as super user to admin db > use anotherDb 

在壳。


哪个是NodeJS的解决scheme?

我试图连接到mongodb://superuser:1234@localhost:27017/my_db_name但我得到这个错误:

{ [MongoError: auth fails] name: 'MongoError', code: 18, ok: 0, errmsg: 'auth fails' }

我的代码是:

 var Db = require('mongodb').Db, MongoClient = require('mongodb').MongoClient; MongoClient.connect("mongodb://superuser:1234@localhost:27017/my_db_name", function(err, db) { if (err) { return console.log(err); } console.log("Successfully connected."); } ); 

请注意, 超级用户是可以在任何数据库中写入读取权限的万能用户。

如果我做了MongoClient.connect("mongodb://superuser:1234@localhost:27017/admin (用admin取代my_db_name ),它连接成功。

如何使用superuser和密码( 1234 )连接到my_db_name

解决方法是使用从Nodejs端执行的shell脚本:

 mongo <<EOF use admin db.auth("superuser", "1234"); use another_db db.addUser({ user: "test", pwd: "12345", roles: ["userAdmin"] }); exit EOF 

然后我可以使用下面的连接string: "mongodb://test:12345@localhost:27017/my_db_name"

这个解决scheme有效,但我仍然在寻找Mongo本地解决scheme。

您可以使用Db().db(dbname)方法创build共享相同连接的新Db实例。

所以你可以validation到admin数据库,并更改为another_db

 db.auth("superuser", "1234"); another_db = db.db("another_db"); another_db.addUser({...}