mongo
通过给每个用户分配角色,来控制用户的权限
因此在给用户授权前,先介绍下常用的角色
一、mongo角色
1.数据库用户角色
// 每个库都有这些角色,针对单个库设置
read // 读
readWrite // 读写
2. 数据库管理角色
// 每个库都有这些角色,针对单个库设置
dbAdmin // 数据库管理角色,可以查看统计信息等,不能修改数据库数据
dbOwner // 针对该数据库的最大权限,包含dbAdmin,userAdmin,readWrite等
userAdmin // 数据库用户管理,创建用户,设置权限
3. 备份和恢复角色
backup // 备份
restore // 恢复
4. 针对所有数据库的角色
以下角色是针对除了local
和config
外的其他所有库
readAnyDatabase // 读所有库
readWriteAnyDatabase // 读写所有库
userAdminAnyDatabase // 所有库的userAdmin权限
dbAdminAnyDatabase // 所有库的dbAdmin权限
二、认证配置
1. 开启认证
开启认证:
在配置文件中增加auth=true
或启动时加--auth
参数
开启认证后从本地进入命令行show dbs
看不到任何库
// show dbs无任何输出
[mongo@host130 ~]$ mongo
> show dbs
>
2. 配置第一个管理员用户
开启认证后,需要首先从本地连接创建一个管理员用户,用这个用户去管理其他用户
-
1.本地登录
mongo shell
-
2.切换到
admin
库 -
3.创建一个用户
admin
密码admin
roles
中赋予了它两个角色,在admin
库赋予readWrite
角色又赋予了
userAdminAnyDatabase
角色,即所有库的用户管理权限
[mongo@host130 ~]$ mongo
> use admin
> db.createUser(
{
user : "admin",
pwd : "admin",
roles: [
{
role : "readWrite",
db : "admin"
},
{
role: "userAdminAnyDatabase",
db : "admin"
}
]
)
-
4.用我们刚才创建的用户登录
以上步骤只是登录并建立了一个管理员用户,要让这个用户生效,我们需要用这个用户登录
方式一: 退出当前shell,重新带账号密码登录
mongo -uadmin -padmin
**方式二:**在刚才shell中认证
// 因为我们这个用户是在admin库建立的,所以需要切换到admin库才能认证 use admin // 登录 db.