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

时间:2013-10-15 21:59:42

标签: node.js mongodb mongoose

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

当我终于想出来的时候,我即将发布一个问题。这是为了帮助别人

2 个答案:

答案 0 :(得分:6)

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

  1. 从mongo shell

    在admin数据库中创建数据库用户

    use admin

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

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

    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"

  5. 注意:用户“mydbuser”只对mydb具有读/写和管理员访问权限。您可以找到有关用户权限here的更多信息。该方案的更全面的示例是here

答案 1 :(得分:0)

这也可以通过修改mongodb本身中的连接字符串来简化:

例如: mongodb:// username:password @ IP:Port / mydbname?authSource = admin ,因为mongoose支持 mongodb < / strong> https://docs.mongodb.com/manual/reference/connection-string/#urioption.authSource