mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。mongodb默认不启用授权认证,只要能连接到该服务器,就可连接到mongod。若要启用安全认证,需要更改配置文件参数auth
官方文档:https://docs.mongodb.com/manual/tutorial/enable-authentication/

  • db.createUser( )函数介绍
1:创建一个root用户,角色为userAdminAnyDatabase,因此root用户对数据库具有管理权限,但是不具备操作权限
db.createUser({user:"root",pwd:"123456", roles: [{ role: "userAdminAnyDatabase", db: "admin" }]});
 
2:createUser()方法说明
user:定义用户名
pwd:设置密码
roles:指定用户的角色,可以用一个空数组给新用户设定空角色; 在roles字段,可以指定内置角色和用户定义的角色。
db:指定用户对哪个数据库具有管理员权限
 
3:角色种类说明
Built-In Roles(内置角色):
①. 数据库用户角色:read、readWrite;
②. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
③. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
④. 备份恢复角色:backup、restore;
⑤. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
⑥. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
⑦. 内部角色:__system
 
4:角色对应的意义说明
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
 
5:查看授权表
db.system.users.find();
 
6:此时退出MongoDB,且编辑配置文件/etc/mongod.conf, 添加
auth=true(针对于2.6版本)
security:(针对于3.4版本)
authorization: enabled
 
7:可以在连接数据库的时候认证,也可以在登入时候认证,这里使用登入之后认证的方式
show dbs; (会报错,因为没有管理授权)
db.auth("root", "123456") 授权之后再查看数据库就没有问题了
 
8:此时登入使用的是root用户,角色是管理角色,但是不具备对数据库的操作权限
use test;
show collections; (会报错,因为没有操作权限)
 
9:再次创建一个用户: test,让其对test具有读写操作, 且切换用户为test
db.createUser({user:"test",pwd:"test", roles: [{ role: "readWrite", db: "test" }]});
db.auth("test", "test")
 
10:再次查看test库的表,发现可以查看了
show collections;
 
11:其实,如果需要创建一个用户具有管理权限且同时具有操作权限,那么这个用户的角色必须是root
db.createUser({user:"yhy",pwd:"123456", roles: [{ role: "root", db: "admn" }]});

mongodb授权认证 介绍的更多相关文章

  1. 启用mongodb授权认证

    linux下 1.以–auth 启动mongod 2.在配置文件mongod.conf 中加入 auth = true

  2. mongodb授权登录

    mongodb版本为3.2(目前最新),演示的是linux下的mongodb授权认证 第一次登录不启动授权(mongo默认不启动) ./mongod --dbpath=/home/db/data -- ...

  3. linux下mongodb授权登录

    mongodb版本为3.2(目前最新),演示的是linux下的mongodb授权认证 第一次登录不启动授权(mongo默认不启动) ./mongod --dbpath=/home/db/data -- ...

  4. mongodb的认证(authentication)与授权(authorization)

    一小白瞎整mongodb,认证部分被折磨的惨不忍睹,看厮可怜,特查了一下文档,浅显地总结一下mongodb认证(authentication)与授权(authorization)的联系. 创建的所有用 ...

  5. 七天学会ASP.NET MVC (四)——用户授权认证问题

    小编应各位的要求,快马加鞭,马不停蹄的终于:七天学会 Asp.Net MVC 第四篇出炉,在第四天的学习中,我们主要了学习如何在MVC中如何实现认证授权等问题,本节主要讲了验证错误时的错误值,客户端验 ...

  6. MongoDB 权限认证

    MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),因为考虑到数据安全的原因特地花了一点时间研究了一下,网上搜出来的解 ...

  7. OAuth2.0认证介绍

    OAuth2.0鉴权 返回 目录 [隐藏] 1 腾讯微博OAuth2.0认证介绍 2 获取accesstoken的两种方式 2.1 1.Authorization code grant 2.1.1 第 ...

  8. React + Node 单页应用「二」OAuth 2.0 授权认证 & GitHub 授权实践

    关于项目 项目地址 预览地址 记录最近做的一个 demo,前端使用 React,用 React Router 实现前端路由,Koa 2 搭建 API Server, 最后通过 Nginx 做请求转发. ...

  9. 新浪微博Oauth2.0授权认证及SDK、API的使用(Android)

    ---------------------------------------------------------------------------------------------- [版权申明 ...

随机推荐

  1. 20155229 2016-2017-2 《Java程序设计》第九周学习总结

    20155229 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBaseConnectivity)即java数据库连接 ...

  2. git push 每次都要输入用户名密码

    添加远程库的时候使用了https的方式..所以每次都要用https的方式push到远程库,速度还慢.. 查看使用的传输协议: git remote -v 重新设置成ssh的方式: git remote ...

  3. 将properties文件的配置设置为整个Web应用的全局变量。

    四种作用域: Web应用中的变量存放在不同的jsp对象中,会有不一样的作用域,四种不同的作用域排序是 pageContext < request < session < applic ...

  4. spark-client 一直 accepted,无法提交任务,报错Failed to connect to driver at

    这个问题的原因有几个: 1.客户端安装的机器一般是虚拟机,虚拟机的名称可能是随便搞的,然而,yarn-client模式提交任务,是默认把本机当成driver的.所以导致其他的机器无法通过host的na ...

  5. [洛谷P2057][bzoj1934]善意的投票(最大流)

    题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来 ...

  6. Storm 第一章 核心组件及编程模型

    1 流式计算 流式计算:数据实时产生.实时传输.实时计算.实时展示 代表技术:Flume实时获取数据.Kafka/metaq实时数据存储.Storm/JStorm实时数据计算.Redis实时结果缓存. ...

  7. jQuery js 格式化数字

    写程序与的时候,有些地方需要js或者jQuery取值,然后将50000000.00格式化成50,000,000.00这种形式: 首先创建formatCurrency.js,代码如下: function ...

  8. python魔法方法大全

    1.python魔法方法详解: python魔法方法是可以修改重载的,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而 ...

  9. .Net MVC缓存

    https://www.cnblogs.com/JoeSnail/p/7993903.html

  10. ubuntu添加国内源

    安装Ubuntu 18.04后,使用国外源太慢了,修改为国内源会快很多. 修改阿里源为Ubuntu 18.04默认的源 备份/etc/apt/sources.list#备份cp /etc/apt/so ...