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 ...
随机推荐
- Linux下实现脚本监测特定进程占用内存情况
Linux系统下,我们可以利用以下命令来获取特定进程的运行情况: cat /proc/$PID/status 其中PID是具体的进程号,这个命令打印出/proc/特定进程/status文件的内容,信息 ...
- SAML
From the book <Modern Authentication with Azure Active Directory for Web Applications> SAML Th ...
- IPython介绍及安装
IPython介绍 - CSDN博客https://blog.csdn.net/gavin_john/article/details/53086766 python命令行在windows下实现tab自 ...
- Java – How to join Arrays
Java – How to join Arrays In this article, we will show you a few ways to join a Java Array. Apache ...
- Mybatis mark 勿看
Mybatis底层原理总结(一) 2018年01月11日 11:51:06 阅读数:2668 本文适合对Mybatis有一定了解的. 1. Mybatis 读取XML配置文件后会将内容放在一个Conf ...
- Jmeter 线程组、运行次数参数化
Jmeter的jmx文件保存了线程数和运行次数等参数,这个参数可以在命令行中传入参数的方式来修改数值 步骤如下 1.生成线程和运行次数的参数 Jmeter选项中函数助手对话框,选中__P参数,这个参数 ...
- Lua中and、or的一些特殊使用方法
Lua中的逻辑运算符:与(and).或(or)和非(not),与其它语言的逻辑运算符功能一致,这里不做赘述.仅仅说一点,全部的逻辑运算符将false和nil视为假,其它不论什么东西视为真.0也视为真. ...
- 高效开发iOS系列 -- 那些不为人知的KVC
我的简书地址:http://www.jianshu.com/p/a6a0abac1c4a valueForKeyPath 本篇来解说一下那些不为人知,也常常被忽略掉,而且非常有用的KVC干货小技巧 获 ...
- [MeetCoder] Crossing Bridge
Crossing Bridge Description N people wish to cross a bridge at night. It’s so dark around there that ...
- 网络协议-网络分层、TCP/UDP、TCP三次握手和四次挥手
网络的五层划分是什么? 应用层,常见协议:HTTP.FTP 传输层,常见协议:TCP.UDP 网络层,常见协议:IP 链路层 物理层 TCP 和 UDP 的区别是什么 TCP/UDP 都属于传输层的协 ...