【发布时间】:2019-04-08 17:51:53
【问题描述】:
我有几个数据库,不想为每个数据库创建单独的用户帐户。 MongoDB 支持使用在另一个数据库中定义的帐户来验证对数据库的访问的概念,但是很难找到语法示例。
当我终于弄明白时,我正要发布一个问题。以防万一它可以帮助其他人
【问题讨论】:
我有几个数据库,不想为每个数据库创建单独的用户帐户。 MongoDB 支持使用在另一个数据库中定义的帐户来验证对数据库的访问的概念,但是很难找到语法示例。
当我终于弄明白时,我正要发布一个问题。以防万一它可以帮助其他人
【问题讨论】:
这是 mongodb、mongoose、节点设置的语法。
在 mongo shell 的 admin 数据库中创建数据库用户
use admin
db.addUser( { user: "mydbuser", pwd: "mypassword", roles: [ ] } )
创建数据库并添加用户 - userSource 表示 凭据在管理数据库中定义
use mydbdb.addUser( { user: "mydbuser", userSource: "admin" , roles: [ "readWrite" , "dbAdmin"] } )
在mongoose连接字符串中指定auth参数
var myDB = mongoose.createConnection("mongodb://mydbuser:mypassword@myipaddress:27017/mydb" ,{auth:{authdb:"admin"}});
选项 {auth:...} 指定用户帐户必须针对 admin db 进行身份验证。
类似从 mongo shell 连接数据库
mongo myipaddr:27017/mydb -u "mydbuser" -p "mypassword"
注意:用户“mydbuser”只有对 mydb 的读/写和管理员访问权限。您可以找到有关用户权限here 的更多信息。该场景的更完整示例是here
【讨论】:
这也可以通过修改mongodb本身的连接字符串来简化:
例如:mongodb://username:password@IP:Port/mydbname?authSource=admin 因为 mongoose 支持 mongodb https://docs.mongodb.com/manual/reference/connection-string/#urioption.authSource
【讨论】: