问题来源

刚装好的mongo,准备登陆进去测一把的,结果就给我报这个错,鄙人是新手,还不太清楚这个,现学一下~

Mongo的身份验证

在上一篇安装mongo的博客中(https://www.cnblogs.com/tuhooo/p/9673685.html),提供了一个简单的配置文件,其中有个选项是

auth=true

这里的意思是开启身份验证,有用户,密码,角色,权限之类的东西,如果把auth设为false的话,那么mongo就相当于裸奔了,谁都可以连进来。如果服务器安全性挺高的,裸奔倒也不是问题。但是现在的版本还是推荐把这个auth给打开。

认证、授权和用户

身份认证:验证用户的身份,你是谁

授权:判定用户在通过了身份验证的数据库上可以进行那些操作,比如读,写,只读,只写等

auth=true会禁止对数据库的匿名访问。

Mongo中用户的信息在system.users集合中,改集合存在于管理数据库中(我这里的是admin),它存储了用户id,密码和创建该集合所面向的数据库以及对用户授权的权限。

在打印的用户信息的第一行中,"user" : "tuhooo", "db" : "admin",表示了tuhooo这个用户及其关联的数据库"admin",它们两个唯一标识了Mongo中的一个用户。如果两个用户具有相同名称,但是关联到了不同的数据库,那么它们被认为是两个不同的用户。

在用户信息的倒数第二行:"roles" : [ { "role" : "read", "db" : "admin" }, { "role" : "userAdminAnyDatabase", "db" : "admin" } ]表明了tuhooo在这个用户可以有不同数据库的不同权限(这里只有一个库,因为我还没来得及建测试库)。如果两个用户具有相同的名称但是关联到了不同的数据库,那么它们被认为是两个不同的用户。

小结:

用户名和关联的数据库唯一标识了Mongo中的一个用户。

一个用户可以在不同数据库中具有不同授权级别的多个角色。

Mongo中的角色

Mongo中可用的角色有以下:

read

提供了对指定数据库所有集合的只读访问。

readWrite

提供了指定数据库中对任意集合的读写访问。

dbAdmin

用户可以在指定数据库中执行管理操作,使用ensureIndex、dropIndexes、reIndex、indexStats管理索引、重命名集合、创建集合等。

userAdmin

用户可以对指定数据库的system.users集合进行readWrite操作。它还启用了对已有用户的权限进行修改或者创建用户的功能,实际上指定了数据库的超级用户角色。

clusterAdmin

使得用户可以对修改或显示与整个系统有关的信息的管理操作授予访问权限。clusterAdmin只适用于管理数据库。

readAnyDatabase

使得用户可以读取Mongo环境中的任意数据库。

readWriteAnyDatabase

类似于readWrite,只不过它适用于所有数据库。

userAdminAnyDatabase

类似于userAdmin,只不过它适用于所有数据库。

dbAdminAnyDatabase

类似于dbAdmin,只不过它适用于所有数据库。

其他角色

从2.6版本开始,一个用户管理员还可以通过提供集合级别以及命令级别的访问权限来创建遵循最小权限策略的用户定义的角色。用户定义的角色仅作用于创建它的数据库中,并且被数据库和角色名称的组合唯一标识。所有用户定义的角色都被存储在system.roles集合中。

几个常见操作

登陆mongo

上图是我登陆的过程,刚用mongo连接进去了,然后直接:

db.auth("tuhooo", "123456")

居然给我报错,只有切换到admin库,然后在这个库下面才能做登陆。

切记切换到admin进行登陆操作。

创建用户并授权

// 客户端连接
$ mongo
// 切换到admin库
> use admin
// 创建用户
> db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
// 登陆, 只有登陆后才能进行其他操作
> db.auth("myUserAdmin", "abc123")
// 授予角色, 可以根据前面的介绍以及个人需要来授予
> db.grantRolesToUser("myUserAdmin", [ { role: "read", db: "admin" } ])
// 查看状态
> db.stats()

以上就是这样了~

mongo的身份验证和授权的更多相关文章

  1. ASP.NET Web API身份验证和授权

    英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-a ...

  2. ASP.NET MVC5学习系列——身份验证、授权

    一.什么是身份验证和授权 人们有时对用户身份验证和用户授权之间的区别感到疑惑.用户身份验证是指通过某种形式的登录机制(包括用户名/密码.OpenID.OAuth等说明身份的项)来核实用户的身份.授权验 ...

  3. 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分

    原文:使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)--第1部分 原文链接:https://www.codeproject.com/Articles/5160941/ASP- ...

  4. 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权

    OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...

  5. 使用 cookie 的身份验证和授权

    前言 在上一章 学学 dotnet core 中的身份验证和授权-1-概念 中,我们大致明白了身份验证和授权两者的关系.那么在本文中,我们将使用 cookie 来做一个简单的身份验证和授权. 本文中我 ...

  6. 学学dotnet core中的身份验证和授权-1-概念

    前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...

  7. ASP.NET WEBAPI 的身份验证和授权

    定义 身份验证(Authentication):确定用户是谁. 授权(Authorization):确定用户能做什么,不能做什么. 身份验证 WebApi 假定身份验证发生在宿主程序称中.对于 web ...

  8. ASP.NET MVC5(五):身份验证、授权

    使用Authorize特性进行身份验证 通常情况下,应用程序都是要求用户登录系统之后才能访问某些特定的部分.在ASP.NET MVC中,可以通过使用Authorize特性来实现,甚至可以对整个应用程序 ...

  9. shiro系列二、身份验证和授权

    一.身份验证 先来看看身份验证的流程 流程如下: 1.首先调用Subject.login(token)进行登录,其会自动委托给Security Manager,调用之前必须通过SecurityUtil ...

随机推荐

  1. Linux伙伴算法

    Linux内存管理伙伴算法 伙伴算法 Linux内核内存管理的任务包括: 遵从CPU的MMU(Memory Management Unit)机制 合理.有效.快速地管理内存 实现内存保护机制 实现虚拟 ...

  2. mongodb3.4 安装及用户名密码设置

    下载: https://www.mongodb.com/download-center?jmp=nav#community 1.解压  修改文件名为mongo3.2.5,执行命令如下: mv mong ...

  3. HttpWebRequest、HttpWebResponse、HttpClient、WebClient等http网络访问类的使用示例汇总

    工作中长期需要用到通过HTTP调用API以及文件上传下载,积累了不少经验,现在将各种不同方式进行一个汇总. 首先是HttpWebRequest: /// <summary> /// 向服务 ...

  4. U811.1接口EAI系列之四--委外订单生成--VB语言

    委外订单主细表.子个构成需求.具体代码与参数说明. 下面调用的通用方法在: http://www.cnblogs.com/spring_wang/p/3393147.html 作者:王春天 2013- ...

  5. springboot 错误处理

    在 java web开发过程中,难免会有一些系统异常或人为产生一些异常.在 RESTful springboot 项目中如何优雅的处理? 分析:在RESTful 风格的springboot 项目中,返 ...

  6. cnetos7最小化安装ifconfig命令找不到怎么办

    我们在安装完centos7最小化系统安装完成后,执行ifconfig命令会报命令未找到.实际上在centos7上,使用“ip addr”和“ip link”命令来查找网卡详情.ifconfig命令已经 ...

  7. [CTCI] 下一个较大元素

    下一个较大元素 题目描述 现在我们有一个int数组,请你找出数组中每个元素的下一个比它大的元素. 给定一个int数组A及数组的大小n,请返回一个int数组,代表每个元素比他大的下一个元素,若不存在则为 ...

  8. win10下快捷命令

    win10下可在win+r的输入框中: 1.gpedit.msc   //本地组策略编辑器 2.regedit    //注册表 3.secpol.msc   //本地安全策略 4.mstsc    ...

  9. jquery 取子节点及当前节点属性值

    分享下jquery取子节点及当前节点属性值的方法. <li class="menulink"><a href="#" rel="ex ...

  10. mybatis 对象关系映射例子

    入门 http://legend2011.blog.51cto.com/3018495/908956 增删改 http://legend2011.blog.51cto.com/3018495/9130 ...