关于用户的认证及权限

用户是跟着库创建的,在哪个库创建的什么权限的什么用户,只对此库有相应权限(除超级管理员以外)。

官网文档:https://docs.mongodb.com/master/reference/security/#security-methods-in-the-mongo-shell

1)内建角色

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

userAdminAnyDatabase 角色,用来管理用户,可以通过这个角色来创建、删除用户

root角色,超级管理员角色,可对所有库,所有用户做创建,删除,插入数据等操作

user:用户名

pwd:密码 

role:指定用户的角色,可以用一个空数组给新用户设定空角色;在 role 字段可以指定内置角色和用户定义的角色

2)常用查询删除命令:

查看mongodb的所有用户: use admin; db.system.users.find().pretty()

查看相应库下的用户:use database; show users

删除用户:use database; db.dropUser('test') 或use admin; db.system.users.remove({user:"admin"})

删除当前库:use database; db.dropDatabase()

重置用户密码:db.changeUserPassword("wsy","wushaoyu")开启用户权限认证的情况下,需要管理员来操作重置密码

验证用户权限:use database;  db.auth("wsy","wushaoyu")  为1则正确

2)创建用户

在admin数据库中添加管理员账户:

use admin

db.createUser({

... user: "admin",

... pwd: "admin",

... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

... });

创建超级管理员用户:

db.createUser(

... {

... user: "root",

... pwd: "root",

... roles: [ { role: "root", db: "admin" } ]

... }

... );

给相应库创建相应用户及权限,在wsy数据库中添加wsy用户:

db.createUser({

... user:'wsy',

... pwd:'wushaoyu',

... roles:[

... {role:'readWrite',db:'wsy'}

... ]})

3)开启用户权限认证功能,在配置文件加入以下2行配置

security:

  authorization: enabled

#重启mongodb服务

[root@mongodb02 ~]# /etc/init.d/mongod restart

#验证用户权限

[root@mongodb04 ~]# mongo --host 192.168.1.7

> use wsy

> db.auth("wsy","wushaoyu")
1

4)重置用户的密码

#切换到root超级管理员角色

> use admin
switched to db admin
> db.auth("root","root")
1

#重置wsy用户的密码

务必切换到wsy库,否则报错,在admin库找不到wsy用户

> db.changeUserPassword("wsy","WuShaoYu")
2019-03-02T19:01:41.375+0800 E QUERY [js] Error: Updating user failed: User wsy@admin not found :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.updateUser@src/mongo/shell/db.js:1541:15
DB.prototype.changeUserPassword@src/mongo/shell/db.js:1545:9
@(shell):1:1

> use wsy(
switched to db wsy
> db.changeUserPassword("wsy","WuShaoYu")
>

#测试wsy用户密码是否修改成功

> db.auth("wsy","wushaoyu")
Error: Authentication failed.
0

> db.auth("wsy","WuShaoYu")
1

#可看出修改密码成功

MongoDB用户权限认证的更多相关文章

  1. MongoDB开启权限认证

      MongoDB默认安装完后,如果在配置文件中没有加上auth = true,是没有用户权限认证的,这样对于一个数据库来说是相对不安全的,尤其是在外网的情况下. 接下来是配置权限的过程: //切入到 ...

  2. MongoDB用户权限管理配置

    MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...

  3. mongodb 用户 权限 设置 详解

    原文地址:http://blog.51yip.com/nosql/1575.html 我知道的关系型数据库都是有权限控制的,什么用户能访问什么库,什么表,什么用户可以插入,更新,而有的用户只有读取权限 ...

  4. 【用户权限】MongoDB用户权限

    一.数据库用户角色: read:允许用户读取指定数据库readWrite:允许用户读写指定数据库 二.数据库管理角色:dbAdmin.dbOwner.userAdmin: dbAdmin:允许用户在指 ...

  5. MongoDB用户权限操作语法及示例

    1.创建用户 1.1.语法格式: 1.1.1.格式及例子 >db.createUser( { user: "<name>", pwd: "<cle ...

  6. spring-security用户权限认证框架

    大家知道在spring中有一个基于acegi开发的spring-security的权限管理模块,它是一个轻量级框架. SpringSecurity能以声明的方式来保护Web应用程序的URL访问,只需简 ...

  7. JWT实现用户权限认证

    网上的java基础教程曾教会我们,将用户登录信息存在session(服务器端)中,需要验证的时候拿出来作对比以达到身份 验证的效果.但这种方式暴露的问题也是可想而知的: 1.Seesion:每次认证用 ...

  8. 【laravel54】关于用户权限认证RBAC和无限极分类

    1.权限认证方面: https://packagist.org/packages/spatie/laravel-permission 用户认证 HTTP本身是无状态,通常在系统交互的过程中,使用账号或 ...

  9. [MongoDB] 用户权限管理

    在新环境按照原来的步骤新装了MongoDB,结果出现了一些错误,才发现版本升到了2.6.1,用户权限相关的内容全部改掉了. 现在使用Role来管理用户,有一些内置的Role,也可以自定义Role. 内 ...

随机推荐

  1. appium+python搭建自动化测试框架_Appium元素定位(二)

    Appium元素定位: 工具:Android\android-sdk\tools    uiautomatorviewer.bat 1. id定位: self.driver.find_element_ ...

  2. Cannot read property 'validate' of undefined

    在使用element-UI表单验证中一直报错,'Error in event handler for “click”: “TypeError: Cannot read property ‘valida ...

  3. Visual Studio Code自定义快捷键(eclipse习惯)

    左下角设置按钮 -> Keyboard Shortcuts -> keybindings.json. [ { "key": "alt+/", &qu ...

  4. Linux 下查看字体

    1.查看所有字体 命令:fc-list 2.查看中文字体 命令:fc-list :lang=zh 3.查看更多字体 命令:fc-match -v "AR PL UKai CN"

  5. linux 安装中文字体

    工具/原料   centos6.5_x64 方法/步骤    centos6.5下使用下面命令进行安装 yum install -y fontconfig mkfontscale  使用fc-list ...

  6. 第一课android开发之在activity间传递参数

    一.活动间简单参数传递:1.在布局中添加按钮,用<Button,用id设置id名称,id="@+id/这儿填写你要设置成的名称":用text设置按钮上显示的文字.text=& ...

  7. Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)

    Problem   Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...

  8. Tire树的学习

    Tire树是一种基于空间换时间思想的,应用于字符串处理的数据结构. 题目地址 分析:设DP数组Can[MaxL],Can[i]=1表示第i位可以理解. 当Can[i]==1,对第i+1位进行匹配,若能 ...

  9. df、du命令

     EXT3  最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件 Ext3目前只支持32000个子目录 Ext3文件系统使用32位空间记录块数量和i-节点数量 ...

  10. 初识gauge自动化测试框架

    segmentfault阅读 官方网站:https://docs.gauge.org/latest/index.html 介绍: Gauge是一个轻量级的跨平台测试自动化工具,可以使用不同的语言中编写 ...