当前位置:   article > 正文

MongoDB用户管理_rwnodb

rwnodb

用户管理

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

示例

示例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" }
    ]
  }
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

use admin
db.createUser(
{
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

示例3:test库管理用户

use test
db.createUser(
{
    user: "admin",
    pwd: "password",
    roles: [ { role: "dbAdmin", db: "test" } ]
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

use test
db.createUser(
{
user: "app1",
pwd: "password",
roles: [ { role: "readWrite" ,db: "test" } ]
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

use test
db.createUser(
{
user: "app2",
pwd: "password",
roles: [ { role: "read" } ]
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

删除用户

use admin
db.dropUser("root")
  • 1
  • 2

查看用户信息

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

验证方式

  • 连接实例时使用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'
  • 1
  • 2
  • 3
  • 4
  • 首先连接到mongod或mongos 实例,然后针对身份验证数据库运行authenticate命令或 db.auth()方法。
# 连接到数据库
mongo 
# 切换到验证数据库
use admin
# db.auth('myUserAdmin','abc123')
  • 1
  • 2
  • 3
  • 4
  • 5

补充

需要在配置文件开启验证

security:
   authorization: enabled   # 打开认证功能
  • 1
  • 2

参考文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/953382
推荐阅读
相关标签
  

闽ICP备14008679号