权限简介
安装 MongoDB 后默认是不开启权限访问控制的,MongoDB 的权限控制是基于用户-角色进行鉴权的,我们可以在配置文件中设置开启权限控制,创建用户分配相应的角色。
内置角色
数据库用户角色:
read、readWrite数据库管理角色:
dbAdmin、dbOwner、userAdmin集群管理角色:
clusterAdmin、clusterManager、clusterMonitor、hostManager备份恢复角色:
backup、restore所有数据库角色:
readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase超级用户角色:
root、dbOwner、userAdmin、userAdminAnyDatabase角色间接或直接提供了系统超级用户的访问。内部角色:
__system
开启权限认证
修改 mongo.conf 配置文件,将参数 auth 的值设置为 true
# 数据文件存放目录
dbpath=/usr/local/mongodb/data
# 事先创建该文件
logpath=/usr/local/mongodb/logs/mongo.log
logappend=true
journal=true
quiet=true
port=27017
# 后台作为守护进程运行
fork=true
# 允许任何IP进行连接
bind_ip=0.0.0.0
# 开启权限认证
auth=true启用权限访问控制后,需要确保在 admin 数据库中拥有一个具有 userAdmin或userAdminAnyDatabase角色的用户。 该用户可以管理用户和角色,例如:创建用户、向用户授予或撤消角色,以及创建或修改自定义角色。
创建用户分配角色
在mongo shell中,在admin数据库中添加一个具有userAdminAnyDatabase角色的用户,包括此用户所需的其他角色。 例如,以下代码在user数据库中使用userAdminAnyDatabase角色和readWriteAnyDatabase角色创建用户 Pikaman。
# 切换数据库
use admin
# 创建用户
db.createUser(
{
user: "Pikaman",
pwd: "123456",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)登录
db.auth('Pikaman','123456')参考:
欢迎关注微信公众号:【皮卡战记】


