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

5

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

我差点就要发帖子提问了,最后我终于弄清楚了。以下是我的方法,以防对其他人有所帮助。

2个回答

8
以下是mongodb、mongoose和node.js的设置语法。
  1. 在mongo shell中的admin数据库中创建数据库用户
  2. use admin

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

  3. 创建数据库并添加用户,userSource指示凭据在admin数据库中定义
  4. use mydb
    db.addUser( { user: "mydbuser", userSource: "admin" , roles: [ "readWrite" , "dbAdmin"] } )

  5. 在mongoose连接字符串中指定auth参数
  6. var myDB = mongoose.createConnection("mongodb://mydbuser:mypassword@myipaddress:27017/mydb" ,{auth:{authdb:"admin"}});

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

  7. 类似地,在mongo shell中连接到数据库
  8. mongo myipaddr:27017/mydb -u "mydbuser" -p "mypassword"

注意:用户“mydbuser”仅具有对mydb的读写和管理访问权限。您可以在这里找到有关用户权限的更多信息。该场景的更完整示例在这里

3
在v2.6版本的createUser方法中,已经移除了userSource字段。您能指导我如何找到与post等效的createUser方法吗? - wdphd
2
这些信息在最近的Mongo版本中已经不再正确。 - ccnokes

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接