【MongoDB系列】用户权限访问控制


权限简介

安装 MongoDB 后默认是不开启权限访问控制的,MongoDB 的权限控制是基于用户-角色进行鉴权的,我们可以在配置文件中设置开启权限控制,创建用户分配相应的角色。

内置角色

  • 数据库用户角色:readreadWrite

  • 数据库管理角色:dbAdmindbOwneruserAdmin

  • 集群管理角色:clusterAdminclusterManagerclusterMonitorhostManager

  • 备份恢复角色:backuprestore

  • 所有数据库角色:readAnyDatabasereadWriteAnyDatabaseuserAdminAnyDatabasedbAdminAnyDatabase

  • 超级用户角色:rootdbOwneruserAdminuserAdminAnyDatabase 角色间接或直接提供了系统超级用户的访问。

  • 内部角色:__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 数据库中拥有一个具有 userAdminuserAdminAnyDatabase角色的用户。 该用户可以管理用户和角色,例如:创建用户、向用户授予或撤消角色,以及创建或修改自定义角色。

创建用户分配角色

在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')

参考:

Built-In Roles

Enable Access Control


欢迎关注微信公众号:【皮卡战记】

皮卡战记

文章作者: Pikaman
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Pikaman !
评论
 上一篇
【MongoDB系列】数据库连接及基本CRUD操作 【MongoDB系列】数据库连接及基本CRUD操作
连接数据库本地连接连接本地数据库,默认端口为 27017 mongo 指定端口连接数据库 mongo --port 28015 远程连接mongo "mongodb://mongodb0.example.com:28015" mongo
2020-03-06
下一篇 
【MongoDB系列】Linux系统安装MongoDB 【MongoDB系列】Linux系统安装MongoDB
简介 MongoDB 是由C++语言编写,一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档
2020-03-02
  目录