用户及权限管理


  验证库:建立用户时use到的库,在使用用户时,要加上验证库才能登陆。

  对于管理员用,必须在admin下创建

  1.建立用户时,use到的库,就是此用户的验证库

  2.登陆时,必须明确指定验证库才能登陆

  3.通常,管理员的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库

  4.如果直接登录到数据库,不进行use,默认的验证库是test,不是我们生产建议的。

  5.从3.6版本开始,不添加bind Ip参数,默认不让远程登录,只能本地管理员登录。

注意: mongodb 服务默认是未开启权限验证的,所以在创建和设置完用户后需要启用权限验证,以及重启服务。

  • linux下 启动时使用 mongo --auth 或 修改mongo.conf,最后一行添加如下内容,然后重启服务。

    #启用权限访问
    auth=true
  • windows下 修改mongodb服务

进入系统注册表(WIN+R-->regedit)

找到[HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->Services-->MongoDB]

在右边的健-值列表中打到 “ImagePath” 在该值中 添加 --auth,然后重启服务。

1、创建用户的命令

use admin
db.createUser
{
    user: "<name>",
    pwd: "<cleartext password>",
    roles: [
       { role: "<role>",
     db: "<database>" } | "<role>",
    ...
    ]
}

备注:要选择某个库登录,就use 到哪个库下面创建用户,并赋予相应的权限;

基本语法说明:

  • user: 用户名
  • pwd: 密码
  • roles:
    role:角色名
    db:作用对象(集合)

角色说明

**数据库用户角色**
read: 只读数据权限
readWrite:学些数据权限
**数据库管理角色**
dbAdmin: 在当前db中执行管理操作的权限
dbOwner: 在当前db中执行任意操作
userAdmin: 在当前db中管理user的权限
**备份和还原角色**
backup
restore
**跨库角色**
readAnyDatabase: 在所有数据库上都有读取数据的权限,只在admin数据库中可用
readWriteAnyDatabase: 在所有数据库上都有读写数据的权限,只在admin数据库中可用
userAdminAnyDatabase: 在所有数据库上都有管理user的权限,只在admin数据库中可用
dbAdminAnyDatabase: 管理所有数据库的权限,只在admin数据库中可用
**集群管理**
clusterAdmin: 管理机器的最高权限,只在admin数据库中可用
clusterManager: 管理和监控集群的权限
clusterMonitor: 监控集群的权限
hostManager: 管理Server
**超级权限**
root: 只在admin数据库中可用。超级账号,超级权限

示例

# 创建root用户
use admin
db.createUser({user:'root',pwd:'root123',roles:['root']})

# 创建admin用户
use admin
db.createUser({user:'admin',pwd:'admin123',roles:[{role:'dbAdminAnyDatabase',db:'admin'}]})

2、查看用户

show users

db.system.users.find()

db.runCommand({usersInfo:'userName'})

3、编辑用户和修改密码

# 修改用户权限或密码
db.updateUser('userName',{pwd:'密码',roles:[......]})

# 修改密码
db.changeUserPassword('userName','xxx')

# 修改密码和用户信息
db.runCommand(
    {
        updateUser:"username",
        pwd:"xxx",
        customData:{title:"xxx"}
    }
)

4、删除用户

db.dropUser('userName')

5、使用账号登录

# 进入 mongo 的shell之后,需要验证账号权限,否则无法查询和使用
db.auth('账号','密码')
作者:joker.liu  创建时间:2022-07-01 16:54
最后编辑:admin  更新时间:2023-10-15 16:13