关于用户的认证及权限

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

官网文档: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. Android设计模式总结

    1.复合模式:三层架构.MVC.MVP.MVVM 2.设计模式-单例模式 配置类的使用. 3.设计模式-模板方法 通过抽象类或接口提前定义要实现的方法. 4.设计模式-观察者模式 消息的通知. 5.设 ...

  2. Java中字符串相加和字符串常量相加区别

    有一道这样的程序: public class TestStringDemo { public static void main(String[] args) { String s1 = "P ...

  3. DVWA 黑客攻防演练(十)反射型 XSS 攻击 Reflected Cross Site Scripting

    XSS (Cross-site scripting) 攻击,为和 CSS 有所区分,所以叫 XSS.又是一种防不胜防的攻击,应该算是一种 "HTML注入攻击",原本开发者想的是显示 ...

  4. (爬虫)requests库

    一.requests库简介 urllib库和request库的作用一样,都是服务器发起请求数据,但是requests库比urllib库用起来更方便,它的接口更简单,选用哪种库看自己. 如果没有安装过这 ...

  5. Hive分桶

    1.简介 分桶表是对列值取哈希值的方式将不同数据放到不同文件中进行存储.对于hive中每一个表,分区都可以进一步进行分桶.由列的哈希值除以桶的个数来决定数据划分到哪个桶里. 2.适用场景 1.数据抽样 ...

  6. Git-初始化配置及SSH_key配置

    step1.安装完Git,执行检查是否安装成功:git --version step2.配置全局变量 配置完执行检查:git config --list step3.生成SSH_KEY 如果报ssh- ...

  7. js坚持不懈之13:JavaScript查找HTML元素的方法

    1. 通过 id 查找 HTML 元素 <!DOCTYPE html> <html> <body> <p id = "intro"> ...

  8. WSUS补丁下载速度慢解决办法

    windows 2008r2 如果是 WSUS 3.0并使用 Windows Internal Database(默认安装) %programfiles%\Update Services\Setup\ ...

  9. #032 有空就看PTA

      我咋买书了? 上学期

  10. 第一次java作业

    学习了c语言半个学期,好像刚开始并不担心Java,因为Java也是类同于C语言的一种语言,可是Java学到现在也将近一个月,在我脑子里现在却还没有一个框架,有点着急了.