MongoDB用户管理

用户管理

MongoDB使用基于角色的访问控制(RBAC)来确定用户的访问权限。用户被赋予一个或多个角色决定了用户的访问或特权MongoDB的资源和操作 用户可以执行。用户应该只拥有确保系统具有最小权限所需的最小权限集。

MongoDB系统的每个应用程序和用户都应映射到不同的用户。此访问隔离有助于访问撤销和持续的用户维护。

认证数据库

添加用户时,可以在特定数据库中创建用户。该数据库是用户的身份验证数据库。

用户可以拥有跨不同数据库的权限; 也就是说,一个数据库中创建的用户可以拥有对其他数据库执行操作的权限。

用户的名称和身份验证数据库充当该用户的唯一标识符。也就是说,如果两个用户具有相同的名称但是在不同的数据库中创建,则它们是两个单独的用户。如果您打算让单个用户拥有多个数据库的权限,请在适用的数据库中创建具有角色的单个用户,而不是在不同的数据库中多次创建用户。

用户管理

常用的内置角色

数据库用户角色
  • read:提供读取数据的权限
  • readWrite:提供对数据的读写权限
数据库管理角色
  • dbAdmin:提供执行管理任务(如与架构相关的任务,索引和收集统计信息)的功能。此角色不授予用户和角色管理权限。

  • dbOwner:数据库所有者可以对数据库执行任何管理操作。

  • userAdmin:提供在当前数据库上创建和修改角色和用户的功能。由于该userAdmin角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接地提供 对数据库的超级用户访问权限,或者,如果范围限定为admin 数据库,则提供对群集的访问权限。

创建用户

db.createUser(
    {
      user: "<name>",   # 用户名
      pwd: "<cleartext password>",   # 密码
      customData: { <any information> },  # 任意内容,相当于备注
      roles: [      
        { role: "<role>",  # 内置常用的角色有root,dbAdmin,readWrite,read
        db: "<database>" } | "<role>", # 管理的数据库对象
    ...(可以添加多个角色)
    ]})

示例

示例1:切换到reporting认证数据库,创建用户reportsUser,密码为’12345678’,权限为对reporting,products,sales拥有只读权限,对accounts库拥有读写权限

use reporting
db.createUser(
  {
    user: "reportsUser",
    pwd: "12345678",
    roles: [
       { role: "read", db: "reporting" },
       { role: "read", db: "products" },
       { role: "read", db: "sales" },
       { role: "readWrite", db: "accounts" }
    ]
  }
)

示例2:创建超级管理员用户,管理所有数据库

use admin
db.createUser(
{
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
})

示例3:test库管理用户

use test
db.createUser(
{
    user: "admin",
    pwd: "password",
    roles: [ { role: "dbAdmin", db: "test" } ]
})

示例4:创建app1用户,对test拥有读写权限

use test
db.createUser(
{
user: "app1",
pwd: "password",
roles: [ { role: "readWrite" ,db: "test" } ]
})

示例5:创建app2用户,对test只读权限

use test
db.createUser(
{
user: "app2",
pwd: "password",
roles: [ { role: "read" } ]
})

删除用户

use admin
db.dropUser("root")

查看用户信息

db.system.users.find().pretty();

验证方式

  • 连接实例时使用mongo命令行身份验证选项(–username, --password和 --authenticationDatabase),或mongodmongos
# 方式1:
mongo -umyUserAdmin -pabc123 127.0.0.1:27017/admin
# 方式2:
mongo --port 27017 -u myUserAdmin -p 'abc123' --authenticationDatabase 'admin'
  • 首先连接到mongod或mongos 实例,然后针对身份验证数据库运行authenticate命令或 db.auth()方法。
# 连接到数据库
mongo 
# 切换到验证数据库
use admin
# db.auth('myUserAdmin','abc123')

补充

需要在配置文件开启验证

security:
   authorization: enabled   # 打开认证功能

参考文档

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值