MongoDB 4.X 创建用户及授权

1. 创建超级用户

安装完之后,打开命令行,进入mongodb安装目录,在bin目录下执行 mongod 启动, 该模式是不需要安全认证的模式,启动后,使用可视化工具如:Robo 3T 打开shell窗口先创建一个有grant权限的用户,如root权限的用户:

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

user:用户名
pwd:密码
db:指定该用户的数据库,admin是用于权限控制的数据库,如果没有需要新建一个
roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。

内置角色

  1. 数据库用户角色:read、readWrite
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  4. 备份恢复角色:backup、restore
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
  7. 内部角色:__system

角色功能

  • Read:允许用户读取指定数据库
  • readWrite:允许用户读写指定数据库
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  • root:只在admin数据库中可用。超级账号,超级权限

2. 创建所有数据库管理用户

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

3. 创建单个数据库用户

use salary
db.createUser(
    {
        user: "vanhr",
        pwd: "vanhr",
        roles: [{ role: "readWrite", db: "salary" }]
    }
)

4. 测试

use salary
db.auth("vanhr", "vanhr")
db.createCollection("demo")
db.demo.insert( { name: "zhangsan", age: 18} )
db.demo.find()

查看全局所有账户

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

查看当前库下的账户

> use admin
switched to db admin
> show users

你可能感兴趣的:(MongoDB 4.X 创建用户及授权)