创建角色用户
自定义角色
--
>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") #验证用户信息
```