MongoDB默认是不需要输入用户名和密码,客户就可以登录的。但是出于安全性的考虑,我们还是要为其设置用户名和密码。本文主要介绍的是MongoDB权限管理之用户名和密码的操作,希望能对您有所帮助。

本文我们介绍MongoDB权限管理,主要介绍的是如何设置用户名和密码。接下来我们就一一介绍。

添加用户的时候必须满足以下两个条件:

1.有相关权限的情况下(后面会说)。

2.mongod没有加--auth的情况下(如果加了,你添加权限的话 会出现下面的情况)。

> use admin    
 
switched to db admin    
 
> db.addUser('sa','sa')    
 
Fri Jul 22 14:31:13 uncaught exception: error {    
 
"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",    
 
"code" : 10057    
 
}    
 
>    

所以我们添加用户时必须先在没有加--auth的时候添加个super  admin。

服务起来后,进入./mongo。

[root@:/usr/local/mongodb/bin]#./mongo    
 
MongoDB shell version: 1.8.2    
 
connecting to: test    
 
> use admin    
 
switched to db admin    
 
> db.adduser('sa','sa')    
 
Fri Jul 22 14:34:24 TypeError: db.adduser is not a function (shell):1    
 
> db.addUser('sa','sa')    
 
{    
 
"_id" : ObjectId("4e2914a585178da4e03a16c3"),    
 
"user" : "sa",    
 
"readOnly" : false,    
 
"pwd" : "75692b1d11c072c6c79332e248c4f699"    
 
}    
 
>    

这样就说明 已经成功建立了,然后我们试一下权限。

> show collections    
 
system.indexes    
 
system.users   

在没有加--auth的情况下 可以正常访问admin喜爱默认的两个表。

> db.system.users.find()    
 
{ "_id" : ObjectId("4e2914a585178da4e03a16c3"), "user" : "sa", "readOnly" : false, "pwd" : "75692b1d11c072c6c79332e248c4f699" }>    

已经成功建立。

下面把服务加上--auth的选项,再进入./mongo。

MongoDB shell version: 1.8.2    
 
connecting to: test    
 
> use admin    
 
switched to db admin    
 
> show collections    
 
Fri Jul 22 14:38:49 uncaught exception: error: {    
 
"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",    
 
"code" : 10057    
 
}    
 
>    

可以看出已经没有访问权限了。

我们就用自己的密钥登录下:

> db.auth('sa','sa')    
 
1   

返回1说明验证成功!

再show collections下就成功了。

.....

我们登录其它表试试:

[root@:/usr/local/mongodb/bin]#./mongo    
 
MongoDB shell version: 1.8.2    
 
connecting to: test    
 
> use test    
 
switched to db test    
 
> show collections    
 
Fri Jul 22 14:40:47 uncaught exception: error: {    
 
"$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",    
 
"code" : 10057    
 
}   

也需要验证,试试super admin登录:

[root@:/usr/local/mongodb/bin]#./mongo    
 
MongoDB shell version: 1.8.2    
 
connecting to: test    
 
> use test    
 
switched to db test    
 
> show collections    
 
Fri Jul 22 14:40:47 uncaught exception: error: {    
 
"$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",    
 
"code" : 10057    
 
}    
 
> db.auth('sa','sa')    
 
0   

返回0验证失败。

好吧,不绕圈子,其实super admin必须从admin那么登录 然后 再use其它表才可以。

> use admin    
 
> use admin  
 
switched to db admin    
 
> db.auth('sa','sa')    
 
1    
 
> use test    
 
switched to db test    
 
> show collections    
 
>    

如果想单独访问一个表,用独立的用户名,就需要在那个表里面建相应的user。

[root@:/usr/local/mongodb/bin]#./mongo    
 
MongoDB shell version: 1.8.2    
 
connecting to: test    
 
> use admin    
 
switched to db admin    
 
> db.auth('sa','sa')    
 
1    
 
> use test    
 
switched to db test    
 
> db.addUser('test','test')    
 
{    
 
"user" : "test",    
 
"readOnly" : false,    
 
"pwd" : "a6de521abefc2fed4f5876855a3484f5"    
 
}    
 
>    

当然必须有相关权限才可以建立。

再登录看看:

[root@:/usr/local/mongodb/bin]#./mongo    
 
MongoDB shell version: 1.8.2    
 
connecting to: test    
 
> show collections    
 
Fri Jul 22 14:45:08 uncaught exception: error: {    
 
"$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",    
 
"code" : 10057    
 
}    
 
> db.auth('test','test')    
 
1    
 
> show collections    
 
system.indexes    
 
system.users    
 
>

MongoDB权限管理之用户名和密码的操作的更多相关文章

  1. MongoDB——权限管理

    MongoDB--权限管理 MongoDB默认是没有权限验证的,但生产环境中,没有权限控制是很不安全的. 我们先不详谈太多概念,直接动手创建两个典型的账号: 超级管理员,类似sql server的sa ...

  2. mongodb权限管理

    说到mongodb就得先谈谈mongodb的用户组,和传统的关系型数据库不一样,mongodb并没有在创建应用时就要求创建权限管理组,所以类似于Robomongo这样的数据库可视化工具在创建conne ...

  3. Windows下MongoDB安装及创建用户名和密码

    下载MongoDB的安装文件https://www.mongodb.com/download-center#community,选择合适的版本(注:本人选择的是3.2.6) 下载完MongoDB.ms ...

  4. mongodb权限管理(转)

    Mongodb 预定义角色 Mongodb 中预定义了一些角色,把这些角色赋予给适当的用户上,用户就只能进行角色范围内的操作. 数据库用户角色 (所有数据库都有) read 用户可以读取当前数据库的数 ...

  5. 基于MongoDB权限管理+gridfs文件上传------云盘系统

    学了一会Mongo,开始毕设的编写. 毕设目前一共分为如下模块 用户管理模块 管理员管理模块 文件管理模块 分享模块 目前已经完成了权限管理部分的后端代码.上传下载已经实现Demo.先把权限弄好后在整 ...

  6. Web端权限管理新增实用功能:批量增加操作,简单方便快速!

    扩展了吉日嘎拉的Web端权限管理功能后,每次添加菜单倒没啥问题,毕竟菜单的数量有限,可是每增加一个模块.功能或者说权限控制点,就得针对各种常规操作,新增很多遍. 浪费时间,还容易出错.新增了一个字典表 ...

  7. MongoDB 权限管理 用户名和密码的操作

    在刚安装完毕的时候MongoDB都默认有一个admin数据库,而admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息.  当admin.system.users中 ...

  8. Mongodb 权限管理

  9. .NET快速信息化系统开发框架 V3.2 -> WinForm“组织机构管理”界面组织机构权限管理采用新的界面,操作权限按模块进行展示

    对于某些大型的企业.信息系统,涉及的组织机构较多,模块多.操作权限也多,对用户或角色一一设置模块.操作权限等比较繁琐.我们可以直接对某一组织机构进行权限的设置,这样设置后,同一组织机构的用户就可以拥有 ...

随机推荐

  1. HDOJ-三部曲-1002-Radar Installation

    Radar Installation Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) ...

  2. hdu 3635

    http://acm.hdu.edu.cn/showproblem.php?pid=3635 1-n个城市,对应放着编号1-n的龙珠. 两种操作 T A B 把编号A的龙珠所在城市内的全部龙珠放到有编 ...

  3. 锋利的jquery学习笔记

    1.$("#tt")获取的永远都是一个jquery对象,所以要判断页面上是否存在某个对象不能像js中 if($("#tt")){ } 而是通过: ){ } ps ...

  4. C++学习笔记1:高级语言

    笔记参考资料:http://www.learncpp.com/ 1.high languages:C,C++,Pascal,Java,Javascript,Perl... compiling proc ...

  5. LeetCode Rectangle Area (技巧)

    题意: 分别给出两个矩形的左下点的坐标和右上点的坐标,求他们覆盖的矩形面积? 思路: 不需要模拟,直接求重叠的部分的长宽就行了.问题是如果无重叠部分,注意将长/宽给置为0. class Solutio ...

  6. VS2010单元测试

    编号:1016时间:2016年5月26日09:35:27功能:VS2010单元测试URL :http://blog.csdn.net/tjvictor/article/details/6175362

  7. eclipse关联源码 Failed to create the part's controls

    在eclipse中关联源码时: 1.出现Failed to create the part's controls错误, 2.而attach source 这个按钮却没有出现. 问题原由:eclipse ...

  8. 解决spring-mvc @responseBody注解返回json 乱码问题

    在使用spring-mvc的mvc的时候既享受它带来的便捷,又头痛它的一些问题,比如经典的中文乱码问题.现在是用json作为客户端和服务端 的数据交换格式貌似很流行,但是在springmvc中有时候会 ...

  9. 输出NSRange类型的数据

    如果你想知道字符串内的某处是否包含其他字符串,使用rangeOfString: 方法 -(NSRange)rangeOfString :(NSString *)aString; NSString *n ...

  10. 阅读《构建之法》第八、九、十章有感和Sprint总结

    1.阅读<构建之法>读后感 第八章:需求分析 需求分析,我觉得需求分析挺重要的,一个需求分析是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应 ...