MongoDB创建用户操作和上面不同。上边的内容,是在数据库运行以前进行,而创建用户,是在数据库运行以后。
$ ./mongo your_ip:your_port> use admin
switched to db admin
> db.createUser({"user" : "user_name", "pwd" : "user_password","roles" : [{"role" : "userAdminAnyDatabase", "db" : "admin"}]})
Successfully added user: {
"user" : "user_name",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
这样我们就加入了一个用户。
MongoDB内建的角色分以下几类:
超级用户:root
数据库用户角色:read、readWrite
数据库管理角色:dbAdmin、dbOwner、userAdmin
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
可操作所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
备份、恢复角色:backup、restore
角色不详细解释了,角色名称的英文写的很明白。
在实际操作中,通常会将用户建在admin中,用roles里的db来指定用户可以使用或管理的数据库名称。
通过这一通操作,我们已经在数据库中创建好了用户。下面需要服务器启用鉴权。
命令行:
./mongod --auth配置文件:
auth=true这个用于mongod启动的数据库。对于集群的router,即mongos,会默认启用auth,所以不需要显式启用。
当MongoDB启用鉴权后,再用mongo客户端连接数据库,就需要输入用户帐号信息了。
$ ./mongo -u user_name -p user_password your_ip:your_port/admin或
$ ./mongo -u user_name -p your_ip:your_port/admin #提示输入密码
同样,在代码中,数据库连接串也同步变成了:
"MongoConnection": "mongodb://user_name:user_password@localhost:27017/admin?wtimeoutMS=2000"三、总结
一般来说,做完上面的安全处理,就可以完全满足生产环境的安全要求了。
再高的要求,可以通过启用TLS来强化。这会是另一个文章。
微信公众账号:老王Plus
如果你想及时得到个人文章以及内容的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号)。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。