MongoDB和Mongoose访问一个数据库,同时validation另一个(NodeJS,Mongoose)

我有几个数据库,并不想为每个数据库创build单独的用户帐户。 MongoDB支持使用另一个数据库中定义的帐户对数据库进行身份validation的概念,但语法的例子很难实现。

当我终于想出来的时候,我正在发布一个问题。 这有助于其他人

这里是一个mongodb,mongoose,节点设置的语法。

  1. 从mongo shell创buildadmin数据库中的数据库用户

    use admin

    db.addUser( { user: "mydbuser", pwd: "mypassword", roles: [ ] } )

  2. 创build数据库并添加用户 – userSource指示凭据在admin数据库中定义

    use mydb
    db.addUser( { user: "mydbuser", userSource: "admin" , roles: [ "readWrite" , "dbAdmin"] } )

  3. 在mongoose连接string中指定auth参数

    var myDB = mongoose.createConnection("mongodb://mydbuser:mypassword@myipaddress:27017/mydb" ,{auth:{authdb:"admin"}});

    选项{auth:…}是指定用户帐户必须对pipe理数据库进行身份validation。

  4. 类似于从mongo shell连接到数据库

    mongo myipaddr:27017/mydb -u "mydbuser" -p "mypassword"

注意:用户“mydbuser”只能对mydb进行读/写和pipe理访问。 你可以在这里find关于用户权限的更多信息。 这里是一个更完整的例子