花1.png

如何修改、创建、删除、开启MongoDB用户,用户管理

概要:从Mongodb的用户创建开始,一步一步完成如何添加用户,开启数据库权限认证,使用账户密码进行shell链接,然后到查询用户、修改密码、删除用户。

添加用户

进入mongodb的shell :

#新版使用mongosh,找不到命令,需要去官网下载mongosh
>mongosh
#旧版使用
>mongo

创建一个不受访问限制的超级用户的神级人物

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

创建一个业务数据库管理员用户

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

其他权限代称

数据库用户角色:read、readWrite;

数据库管理角色:dbAdmin、dbOwner、userAdmin;

集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;

备份恢复角色:backup、restore;

所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

超级用户角色:root

内部角色:__system

==================================================================

Read:允许用户读取指定数据库

readWrite:允许用户读写指定数据库

dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户

clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

root:只在admin数据库中可用。超级账号,超级权限

验证用户

>db.auth("root","pwd")
{ ok: 1 }

开启权限的大门

配置文件有两种,根据自己的配置增加以下代码

# mongod.cfg
security:
  authorization: "enabled"
# mongod.conf
auth=true

重新启动mongodb

net stop mongodb;
net start mongodb;

shell连接

> mongosh --host localhost --port 27017 -u "root" -p "pwd"

查询用户

>db.system.users.find()
[
  {
    _id: 'admin.root',
    userId: UUID('d4df4d22-e4ce-44c5-925f-1ab1d4f1e9c1'),
    user: 'root',
    db: 'admin',
    credentials: {
      'SCRAM-SHA-1': {
        iterationCount: 10000,
        salt: '2iFRAoMwCJny+qKtcl2LEQ==',
        storedKey: 'slB0B/k8URz0fRmoYty3DFzDlNM=',
        serverKey: 'GYEGzbB7GYXgubXGP4Qo2EOASEI='
      },
      'SCRAM-SHA-256': {
        iterationCount: 15000,
        salt: 'PQZoU6w8QdagP/sI71U2o69eH7KFnJxMK1ce3Q==',
        storedKey: 'PP3l+9lBbh6Bg1kKQxJEiIizyYrrjv3dly9UyvoCHqo=',
        serverKey: 'pEbnkxpzglOzD0pRRQxxWWCDu5hSQ+yo4dX0kTcNHek='
      }
    },
    roles: [ { role: 'root', db: 'admin' } ]
  }
]

修改密码

use admin
db.changeUserPassword("root", "xxx")

用户权限

使用updateUser函数进行修改用户权限,需要使用数据库管理员权限

db.updateUser("blog",
  {
    pwd:"seeyou",
    roles:[
      {role:"dbAdmin",db:"blog"},
      {role:"readWrite",db:"blog"},
      "read"
    ]
  }
)

删除用户

#删除root用户
db.dropUser("root")
Created By @Seeyou | 稀有博客