mongodb登陆需要创建用户,你可以在服务启动时配置要创建的用户.但是root用户只能在admin库里使用,如果要获取生产可用的登陆用户,需要再创建新的用户.
创建
db.createUser(
{
user: "liu3",
pwd: "123456",
roles: [ { role: "readWrite", db: "admin" }, "readWrite" ]
}
)
这里要说明的是,如果没有在roles可以指定多个,db缺失则认为是当前库.同时你在哪个库里创建的角色该角色就在哪个库里可见.比如我这个是在db one中创建,则用户信息如下:
{ "_id" : "one.liu3", "userId" : UUID("797e003f-4840-4da7-86e8-ae1f88bcc393"), "user" : "liu3", "db" : "one", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "BTOSoTtUIs4q8iMQeo9Ciw==", "storedKey" : "6aBk67ASyql+GIhQsNCIu+Xi0WI=", "serverKey" : "wK0z372ySp/qCjHKoQ1/HZ68UG4=" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "n9ZL9VZ6s3OnjecgHuuUb+JbMPk7cVusgLHtog==", "storedKey" : "3qjvr+QI5j24zrXm3hRdlzrFwOEKKCqTf+J8tRQT/pc=", "serverKey" : "ZjrPSZ/NNWGY178bVNN8RSDFhDcwnoXFzDk+6L+tQtA=" } }, "roles" : [ { "role" : "readWrite", "db" : "admin" }, { "role" : "readWrite", "db" : "one" } ] }
实际外部配置中,你只能选择一个连接库内部的用户,否则会提示认证异常.比如spring boot的连接配置:
spring.data.mongodb.uri=mongodb://liu3:123456@localhost:27017/one
role支持的角色可以是预定义角色和自定义角色,预定义角色常用的有:
1 数据库用户角色 (客户端角色)
read readWrite
2 管理员角色
dbAdmin dbOwner userAdmin
3 集群管理员角色
clusterAdmin clusterManager clusterMonitor hostManager
4 备份,恢复角色
backup restore
5 通用数据库角色
readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase
6 超级角色
root
7 内部角色
__system
实际使用要注意角色的适用范围.