创建角色用户

自定义角色 -- >i 在实际生产环境中,MongoDB自带的角色无法满足场景需求,所以需要数据库管理人员,创建对应的运维角色账号。将权限进行最小单元拆分,降低数据库风险。 >s **当前库中自定义用户** jbnWriteRead #jbn 读写用户;操作权限:使用系统内置角色对象 ["readWrite","dbAdmin"] 操作库:JBN_PRO BROperator #数据库整库备份恢复用户;操作权限:["backup","restore"]操作库:ALL pwd:Bn800800 sampleUser #简单用户;操作权限:["insert","update","find"] 操作库:JBN_PRO pwd: ioy123456 IOTDataLogManager #针对`i_iotdata_log`表的数据删除角色,操作权限:["find","remove"] 操作库:JBN_PRO,操作集合:i_iotdata_log pwd:dm123456 onlyRead 只读用户,操作库JBN_PRO pwd: zl123123 添加自定义角色/用户步骤: **1. 进入主节点。 2. 切换到admin库,添加角色。 3. 切换到要添加用户的数据库。 4. 使用新加的角色,添加用户。 5. 退出当前管理员账户,使用新账户登录测试。 6. 将账户交付给对应人员使用。** ``` mongo --host 127.0.0.1:27017 -u user -p password --authenticationDatabase admin #进入主节点 use db 切换到要填加用户的数据库 show roles; #看一下有哪些角色,防止添加重复角色。 show users; #看一下都有哪些用户,若有类似的可以修改或直接使用。 创建角色 db.createRole( { role: "onlyReadWrite", #角色名 privileges:[{ resource:{db:"JBN_POR",collection:""}, #db:当前库名,collection:若为空,则角色可操作所以集合,不为空,可操作指定集合。 actions:[ #可执行哪些操作["insert","update","remove","find"],跟多参数请参考官方文档。 "insert", "update", "find" ] }], roles: [ {role:"read", db: "admin"} #继承哪些角色。指定库指定表,此值为空即可,但是不能不加。 ] } ); 创建用户 db.createUser( { user: "sampleUser", #用户名 pwd: "123456", # 密码 roles: [{role: "roleName", db: "DB"}] #role:新添加或以前添加的角色名,db:角色所在数据库名,一般为当前数据库。 } ); # 添加用户 exit # 退出当前登录 mongo --host 127.0.0.1:27017 -u newUser -p password --authenticationDatabase test #使用新用户登录 show dbs #查看库。是否为指定使用库。 use db #切换库 show collections 查看可操作集合。 #测试成功,发放账户。 ``` >d **WARNING:** 每当运维人员发生更换/调岗时,需要提醒新运维人员,修改一次账户密码,此密码只有他自己知道就行。 用户验证失败超过3次,将无法修改密码。 ``` 以下两种修改密码方式: db.changeUserPassword("username","new password"); db.changeUserPassword({ user:"You need change password's username", pwd: passwordPrompt() }); db.auth("username","password") #验证用户信息 ```