概要:从Mongodb的用户创建开始,一步一步完成如何添加用户,开启数据库权限认证,使用账户密码进行shell链接,然后到查询用户、修改密码、删除用户。
添加用户
进入mongodb的shell :
#新版使用mongosh,找不到命令,需要去官网下载mongosh
>mongosh
#旧版使用
>mongo
创建一个不受访问限制的超级用户的神级人物
db.createUser(
{
user:"root",
pwd:"pwd",
roles:["root"]
}
)
创建一个业务数据库管理员用户
db.createUser({
user:"user",
pwd:"pwd",
roles:[
{role:"readWrite",db:"db1"}
]
})
其他权限代称
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色:__system
==================================================================
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
验证用户
>db.auth("root","pwd")
{ ok: 1 }
开启权限的大门
配置文件有两种,根据自己的配置增加以下代码
# mongod.cfg
security:
authorization: "enabled"
# mongod.conf
auth=true
重新启动mongodb
net stop mongodb;
net start mongodb;
shell连接
> mongosh --host localhost --port 27017 -u "root" -p "pwd"
查询用户
>db.system.users.find()
[
{
_id: 'admin.root',
userId: UUID('d4df4d22-e4ce-44c5-925f-1ab1d4f1e9c1'),
user: 'root',
db: 'admin',
credentials: {
'SCRAM-SHA-1': {
iterationCount: 10000,
salt: '2iFRAoMwCJny+qKtcl2LEQ==',
storedKey: 'slB0B/k8URz0fRmoYty3DFzDlNM=',
serverKey: 'GYEGzbB7GYXgubXGP4Qo2EOASEI='
},
'SCRAM-SHA-256': {
iterationCount: 15000,
salt: 'PQZoU6w8QdagP/sI71U2o69eH7KFnJxMK1ce3Q==',
storedKey: 'PP3l+9lBbh6Bg1kKQxJEiIizyYrrjv3dly9UyvoCHqo=',
serverKey: 'pEbnkxpzglOzD0pRRQxxWWCDu5hSQ+yo4dX0kTcNHek='
}
},
roles: [ { role: 'root', db: 'admin' } ]
}
]
修改密码
use admin
db.changeUserPassword("root", "xxx")
用户权限
使用updateUser函数进行修改用户权限,需要使用数据库管理员权限
db.updateUser("blog",
{
pwd:"seeyou",
roles:[
{role:"dbAdmin",db:"blog"},
{role:"readWrite",db:"blog"},
"read"
]
}
)
删除用户
#删除root用户
db.dropUser("root")