mongo的身份验证和授权
问题来源

刚装好的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的身份验证和授权的更多相关文章
- ASP.NET Web API身份验证和授权
英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-a ...
- ASP.NET MVC5学习系列——身份验证、授权
一.什么是身份验证和授权 人们有时对用户身份验证和用户授权之间的区别感到疑惑.用户身份验证是指通过某种形式的登录机制(包括用户名/密码.OpenID.OAuth等说明身份的项)来核实用户的身份.授权验 ...
- 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分
原文:使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)--第1部分 原文链接:https://www.codeproject.com/Articles/5160941/ASP- ...
- 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权
OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...
- 使用 cookie 的身份验证和授权
前言 在上一章 学学 dotnet core 中的身份验证和授权-1-概念 中,我们大致明白了身份验证和授权两者的关系.那么在本文中,我们将使用 cookie 来做一个简单的身份验证和授权. 本文中我 ...
- 学学dotnet core中的身份验证和授权-1-概念
前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...
- ASP.NET WEBAPI 的身份验证和授权
定义 身份验证(Authentication):确定用户是谁. 授权(Authorization):确定用户能做什么,不能做什么. 身份验证 WebApi 假定身份验证发生在宿主程序称中.对于 web ...
- ASP.NET MVC5(五):身份验证、授权
使用Authorize特性进行身份验证 通常情况下,应用程序都是要求用户登录系统之后才能访问某些特定的部分.在ASP.NET MVC中,可以通过使用Authorize特性来实现,甚至可以对整个应用程序 ...
- shiro系列二、身份验证和授权
一.身份验证 先来看看身份验证的流程 流程如下: 1.首先调用Subject.login(token)进行登录,其会自动委托给Security Manager,调用之前必须通过SecurityUtil ...
随机推荐
- openkm预览功能报错:flexpaper License key not accepted(no key passed to viewer)
openkm:6.3.4 使用google浏览器打开,想预览文件,但是pdf.word和图片都不能显示.只是显示空白. 换成IE后,再次尝试,发现了报错信息: 解决方案: 1- Stop openkm ...
- IE6-IE9兼容性问题列表及解决办法:锁表头的JQuery方案和非JQuery方案(不支持IE6,7,8)
鉴于从IE8开始,IE不再支持css的expression了,所以以前依靠它完成锁表头的代码就全部失效了,面对新的浏览器,一切又要重新来过了. 现在所能找到的对于锁表头的方案主要有两种路子:一种是使用 ...
- U811.1接口EAI系列之二-BOM构成-委外BOM构成--VB语言
1.下面代码实现了VB6.0中调用U8EAI-BOM构成服务,以下代码均为项目实际代码,可直接复制应用. 2.在u811.1版本中委外BOM构成与正常的BOM构成是同系列表,不单独存储. 3.是以存货 ...
- centos 安装pecl
一.更新yum源,安装php7 CentOS/RHEL 7.x: 1 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-lates ...
- 如何分析Java程序中的死锁
使用下面方式:产生java的Thread Dump信息 windows平台上:ctrl+break 或者 ctrl+(fn+b)键 Linux平台上:kill -3 pid (查找程序进程id -&g ...
- Mac OSX 快捷键&命令行
一.Mac OSX 快捷键 ctrl+shift 快速放大dock的图标会暂时放大,而如果你开启了dock放大Command+Op ...
- 【Unity】10.2 通用动画的导入和设置
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 使用类人动画时,Mecanim 的强大之处最明显.但是,尽管没有 Avatar 系统和其他功能,非类人动画也仍然受Mec ...
- 【Unity】2.10 利用VS2015编辑Unity的C#脚本
分类:Unity.C#.VS2015 创建日期:2016-03-31 一.简介 用VS2015编辑C#脚本时,如果让其"显示所有文件",就会看到VS2015解决方案资源管理器中项目 ...
- 智能引导式报错(Class file name must end with .class)
转自:http://blog.sina.com.cn/s/blog_8e761c110101dyj3.html 在使用Eclipse时,有时会出现这样的错误,在使用智能引导式会报错An interna ...
- iOS7隐藏状态栏 status Bar
转自:http://blog.csdn.net/dqjyong/article/details/17896145 IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCO ...