管理用户的创建及使用

创建用户的函数是db.createUser({...}),创建用户时通常需要为该用户添加权限,如read、readWrite权限。

可添加的权限以及说明:

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

进入到MongoDB命令行,并切换到admin数据库:

> use admin
switched to db admin

为某用户添加userAdminAnyDatabase权限:

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

提示Successfully字样的信息,即创建用户成功:

Successfully added user: {
......
}

在重启MongoDB服务之前,需在配置文件末尾处添加auth = true,之后必须先进行用户权限认证才可操作数据库:

# 权限认证
auth = true

进入到MongoDB命令行(会话)中,切换admin数据库,并进行权限认证:

> use admin
switched to db admin
> db.auth("[username]", "[password]")
1

1代表用户权限认证成功,0代表用户权限认证失败。

普通用户的创建及使用

普通用户除了无法使用clusterAdmin、readAnyDatabase、readWriteAnyDatabase等权限外,其他权限都可使用。

每一个数据库都有自己的用户组,用户组中有多个用户,每一个用户的权限可以拥有多个。

[root@VM-0-6-centos mongodb-4.4.6]# ./bin/mongo
......
> db.auth("[username]", "[password]")
Error: Authentication failed.
0

如果没有切换指定的数据库,直接进行用户权限认证,会提示认证失败的消息。只有admin数据库的用户才有权限添加普通用户。

> use admin
switched to db admin
> db.auth("[username]", "[password]")
1

为training数据库添加一个普通用户training:

> use training
switched to db training
> db.createUser( { user: "training", pwd: "training", roles: [ { role: "readWrite", db: "training" } ] } )
Successfully added user: {
......
}

提示:如果当前会话中已经认证了A数据库的用户,再切换到B数据库进行权限认证后,可能会提示“logical sessions can't have multiple authenticated users”错误。因为一次会话不能认证多个用户。

更新用户权限

db.updateUser("[username]", {...})函数可以修改用户的权限以及其他信息。

更新权限之前,需要切换到被更新用户所在的数据库,更新操作需要当前会话中认证过的用户具有userAdminuserAdminAnyDatabaseroot角色的用户执行。

切换到admin数据库,修改其中一个用户的用户权限:

db.updateUser(
"[username]",
{
"roles": [
{
"role": "userAdminAnyDatabase",
"db": "admin"
},
{
"role": "readWriteAnyDatabase",
"db": "admin"
},
{
"role": "dbAdminAnyDatabase",
"db": "admin"
}
]
}
)

修改成功之后,显示所有用户,查看是否更改成功:

> show users
{
"user" : "[username]",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
},
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
}
]
}

更改用户密码

db.updateUser("[username]", {"pwd": "[password]"})db.changeUserPassword("[username]", "[password]")可以更改用户的密码。

更新密码之前,需要切换到被更新用户所在的数据库,更新操作需要当前会话中认证过的用户具有userAdminuserAdminAnyDatabaseroot角色的用户执行。

删除用户

db.dropUser("[username]")可以删除用户。

删除用户之前,需要切换到被删除用户所在的数据库,更新操作需要当前会话中认证过的用户具有userAdminuserAdminAnyDatabaseroot角色的用户执行。

如何管理MongoDB的用户和权限的更多相关文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  2. MongoDB系列---用户及权限管理02

    MongoDB-——Privilege 学习大纲: 1.用户权限管理 2.用户操作 知识回顾:  本系列上一篇博文我们讲述了如何搭建环境以及配置我们的MongoDB,通过搭建环境后我们又学习了如何通过 ...

  3. mongoDB之用户及权限设置

    之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB.在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问. 我部署的环境是ubuntu 1 ...

  4. mysql用户管理(新增用户及权限管理)

    一.登录: # mysql  –u  root  –p  回车输入密码 退出: #exit; 二.修改密码: 格式:mysqladmin  –u 用户名 –p旧密码  password  新密码 # ...

  5. mongodb 设置用户密码权限

    1 设置管理员账户 use admindb.createUser({ user: "useradmin", pwd: "adminpassword", role ...

  6. MongoDB(四)mongodb设置用户访问权限

    我们知道MySQL在安装的时候需要我们设置一个数据库默认的用户名和密码,mongodb也不例外,不过mongodb是默认的没有设置访问限制的,不需要输入用户名和密码都可以访问的,但是这样会十分的不安全 ...

  7. mongodb创建用户(转发)

    参考文档: https://www.cnblogs.com/itxiongwei/p/5520863.html MongoDB 缺省是没有设置鉴权的,业界大部分使用 MongoDB 的项目也没有设置访 ...

  8. mongodb之用户/认证/角色/权限管理

    前言 用户权限管理很重要,只给需要的权限,防止应用系统漏洞导致脱库 认证和授权 Authentication 认证识别,解决我是谁 Authorization 操作授权,我能做什么 认证机制 MONG ...

  9. 管理 MongoDB 用户和权限

    创建用户 创建用户的函数是:db.createUser(). 创建用户时,需要为该用户添加权限.可添加的权限以及说明: 权限 作用 read 允许用户读取指定数据库. readWrite 允许用户读写 ...

随机推荐

  1. 面试阿里P6难在哪?(面试难点)

    对于很多没有学历优势的人来说,面试大厂是非常困难的,这对我而言,也是一样,出身于二本,原本以为就三点一线的生活度过一生,直到生活上的变故,才让我有了新的想法和目标,因此我这个二本渣渣也奋斗了起来,竟拿 ...

  2. jmeter完成一个简单的性能测试(jp@gc - PerfMon Metrics Collector的运用)

    场景:公司项目解耦,在项目前期对新的架构进行简单的性能测试 工具:jmeter 1.大致结构如下: 1800秒(半个小时)内持续产生20000的线程 创建了聚合报告,主要是查看服务器响应结果以及相应时 ...

  3. IPMITool和其中常用的命令

    IPMITool和其中常用的命令 # ipmitool -I lanplus -H 10.1.83.14-U ##### -P ##### chassis power status # ipmitoo ...

  4. nosql数据库之Redis集群

    Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation). Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 ...

  5. esp项目,

    http://www.cirmall.com/circuit/6012/%E6%99%BA%E8%83%BD%E5%8C%96%E7%A7%8D%E8%8A%B1%E7%AE%80%E6%98%93% ...

  6. Python中字符串转换列表

    前言:在使用Python完成工作中一些任务的时候,常常要对数据类型进行转换,比如字符串转列表,列表转字符串,字符串转元组等等,下面分享一下常用的字符串转列表 字符串转列表 第一种字符串转列表: t_s ...

  7. Java基础语法,常用知识复习

    1.开发环境搭建 1.1JDK.JRE.JVM.的关系 JDK = JRE + 开发工具集(例如javac编译工具集等) JRE = JVM + Java SE 标准类库 2.基本语法 2.1.jav ...

  8. 痞子衡嵌入式:在SBL项目实战中妙用i.MXRT1xxx里SystemReset不复位的GPR寄存器

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx里SystemReset不复位的GPR寄存器的小妙用. 我们知道稍大规模的项目代码设计一般都是多人协作完成的,在项目 ...

  9. 解决Caused by: org.apache.ibatis.exceptions.PersistenceException:

    在mybatis-config核心配置文件中注册了xml以后出现了新的异常错误 Caused by: java.io.IOException: Could not find resource cn.d ...

  10. Go语言的函数07---闭包练习(ATM存取款)

    package main import "fmt" /* @ATM(闭包练习) ·写一个Atm(函数),返回存款,取款两个内层函数 ·存款,取款两个函数,都以一个金额为参数,返回存 ...