MongoDB和Mongoose访问一个数据库,同时对另一个数据库进行身份验证(NodeJS,Mongoose)

New*_*bie 4 mongoose mongodb node.js

我有几个数据库,不想为每个数据库创建单独的用户帐户.MongoDB支持使用另一个数据库中定义的帐户验证对数据库的访问的概念,但语法示例很难得到.

当我终于弄明白时,我即将发布一个问题.这是为了以防万一

New*_*bie 6

这是mongodb,mongoose,节点设置的语法.

  1. 从mongo shell在admin数据库中创建数据库用户

    use admin

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

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

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

  3. 在mongoose连接字符串中指定auth参数

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

    选项{auth:...}是指定必须针对admin db对用户帐户进行身份验证的选项.

  4. 同样从mongo shell连接到数据库

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

注意:用户"mydbuser"只对mydb具有读/写和管理访问权限.您可以在此处找到有关用户权限的更多信息.该方案的更全面的例子是在这里

  • userSource字段在createUser方法中从v2.6中删除.你能引导我到相当于帖子的createUser方法吗? (3认同)
  • 在最新版本的mongo中,此信息不再正确. (2认同)