mongodb 创建用户

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

实际使用要注意角色的适用范围.

参考资料:

mongodb 预定义角色
自定义角色

posted @ 2021-09-12 12:19  橙木鱼  阅读(4672)  评论(0编辑  收藏  举报