权限简介
安装 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')
参考:
欢迎关注微信公众号:【皮卡战记】
