MongoDB为用户设置访问权限

MongoDB默认设置为无权限访问限制

注:基于Windows平台
MongoDB在本机安装部署好后
1. 输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,一个名为local。local好像没啥用,如果哪位在使用过程中发现了这个local表的用途,希望能够留言提醒,那我们就专心来说说admin表
2. 输入命令:use admin,你会发现该DB下包含了一个system.user表,呵呵,没错,这个表就等同于MsSql中的用户表,用来存放超级管理员的,那我们就往它里面添加一个超级管理员试试看
3.

输入命令:db.addUser(‘sa‘,‘sa‘),这里我添加一个超级管理员用户,username为sa,password也为sa,即然我们添
加了超级管理员,那咱们就来测试下,看看咱们再次连接MongoDB需不需要提示输入用户名、密码,我们先退出来(ctrl+c)
4. 输入命令:use admin
5. 输入命令:show collections,查看该库下所有的表,你会发现,MongoDB并没有提示你输入用户名、密码,那就奇怪了,这是怎么回事呢?在文章最开始提到了,
MongoDB默认设置为无权限访问限制,即然这样,那我们就先把它设置成为需要权限访问限制,咱们再看看效果,怎么设置呢?
6. 在注册表中,找到MongoDB的节点,在它的ImgPath中,我们修改一下,加入 -auth,如下所示:
"D:\Program Files\mongodb\bin\mongod" -dbpath e:\work\data\mongodb\db -logpath e:\work\data\mongodb\log -auth -service
7. 输入命令:use admin
8.
输入命令:show collections,呵呵,我们发现无法查看该库下的表了,提示:"$err" : "unauthorized
db:admin lock type:-1
client:127.0.0.1",很明显,提示没有权限,看来关键就在于这里,我们在启动MongoDB时,需要加上-auth参数,这样我们设置的
权限才能生效,好,接下来我们使用刚刚之前设置的用户名、密码来访问
9. 输入命令:db.auth(‘sa‘,‘sa‘),输出一个结果值为1,说明这个用户匹配上了,如果用户名、密码不对,会输入0
10. 输入命令:show collections,呵呵,结果出来了,到这里,权限设置还只讲到一多半,接着往下讲,我们先退出来(ctrl+c)
11. 输入命令:mongo TestDB,我们尝试连接一个新的库(无论这个库是否存在,如果不存在,往该库中添加数据,会默认创建该库),然后,我们想看看该库中的表
12. 输入命令:show collections,好家伙,没权限,我们输入上面创建的用户名、密码
13.

输入命令:db.auth(‘sa‘,‘sa‘),输入结果0,用户不存在,这下有人可能就不明白了,刚刚前面才创建,怎么会不存在呢?原因在于:当我们
单独访问MongoDB的数据库时,需要权限访问的情况下,用户名密码并非超级管理员,而是该库的system.user表中的用户,注意,我这里说的是
单独访问的情况,什么是不单独访问的情况呢?接下来再讲,现在咋办,没权限,那我们就尝试给库的system.user表中添加用户
14. 输入命令:db.addUser(‘test‘,‘111111‘),哇靠,仍然提示没有权限,这可咋办,新的数据库使用超级管理员也无法访问,创建用户也没有权限,呵呵,别急,即然设定了超级管理员用户,那它就一定有权限访问所有的库
15. 输入命令:use admin
16. 输入命令:db.auth(‘sa‘,‘sa‘)
17. 输入命令:use TestDB
18.
输入命令:show
collections,哈哈,一路畅通无阻,我们发现可以利用超级管理员用户访问其它库了,呵呵,这个就是不单独访问的情况,不难发现,我们是先进入
admin库,再转到其它库来的,admin相当于是一个最高级别官员所在区域,如果你是个地产商,想在地方弄个大工程做做,你想不经过那些高级官员就
做,这是行不通的,你需要先去到他们那里,送点礼,再顺着下到地方,工程你就可以拿到手了,此言论仅为个人观点,不代表博客园;即然工程拿到手了,就要开
始建了,那我们不至于每加块砖、添个瓦都得去和那帮高级官员打招呼吧,所以我们得让这个工程合法化,咱们得把相关的手续和证件弄齐全,不至于是违建
19. 输入命令:db.addUser(‘test‘,‘111111‘),我们给TestDB库添加一个用户,以后每次访问该库,我都使用刚刚创建的这个用户,我们先退出(ctrl+c)
20. 输入命令:mongo TestDB
21. 输入命令:show collections,提示没有权限
22. 输入命令:db.auth(‘test‘,‘111111‘),输出结果1,用户存在,验证成功
23. 输入命令:show collections,没再提示我没有权限,恭喜您,成功了
注:当需要使用权限才能访问MongoDB时,如果需要查看MongoDB中所有的库,我们只能通过超级管理员权限,输入命令show dbs来查看了。

转载自:http://www.jb51.net/article/32090.htm

时间: 2024-10-10 19:12:12

MongoDB为用户设置访问权限的相关文章

Linux之acl库的安装与使用(限制Linux某用户的访问权限)

acl库 作用:限制Linux某用户的访问权限 acl库的安装 首先github中下载acl代码: git clone https://github.com/acl-dev/acl 进入acl, 执行make cd acl make 注意: [因为acl是由c/c++编写的,需要提前安装好gcc, g++] 安装到用户根目录: make packinstall 一般到这儿就能编译安装成功了,在/user/include/ 目录下会有acl-lib目录. 如果是centos系统,可直接安装 yum

office365 邮箱用户完全访问权限管理介绍

office365 邮箱用户完全访问权限管理 其实我们前面文章已经介绍了官员Office365的很多文章,也从中提到了一些关于权限管理的文章.今天我们主要说说对于云端exchange的完全访问权限管理,其实对于云端的操作合本地大同小异,好了不多说了,开始今天的主题,我们今天会通过两种方式对云端的邮箱用户完全访问权限管理做介绍. 首先是第一种,使用GUI图形介绍: 我们首先用portal看看及修改: 修改用户的完全访问权限:编辑用户 邮箱委托---->完全访问--->增加及删除用户: 我们增加一

MongoDB设置访问权限、设置用户

mongo                          # 运行客户端(也可以去mongodb安装目录下运行这个)use admin                      # 切换到系统帐户表db.system.users.find()         # 查看当前帐户(密码有加密过)db.system.users.remove({})     # 删除所有帐户db.addUser('admin','password') # 添加新帐户 MongoDB已经使用很长一段时间了,基于Mon

MongoDB 3.0以上版本设置访问权限、设置用户

定义:创建一个数据库新用户用db.createUser()方法,如果用户存在则返回一个用户重复错误. 语法:db.createUser(user, writeConcern)    user这个文档创建关于用户的身份认证和访问信息:    writeConcern这个文档描述保证MongoDB提供写操作的成功报告. · user文档,定义了用户的以下形式:{ user: "<name>",  pwd: "<cleartext password>&quo

MongoDB设置访问权限、设置用户(转)

MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于Windows平台 MongoDB在本机安装部署好后 1. 输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,一个名为local.local好像没啥用,如果哪位在使用过程中发现了这个local表的用途,希望能够留言提醒,那我们就专心来说说admin表 2. 输入命令:use

mongodb设置访问权限

MongoDB在本机安装部署好后 1. 输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,一个名为local.local好像没啥用,如果哪位在使用过程中发现了这个local表的用途,希望能够留言提醒,那我们就专心来说说admin表 2. 输入命令:use admin,你会发现该DB下包含了一个system.user表,呵呵,没错,这个表就等同于MsSql中的用户表,用来存放超级管理员的,那我们就往它里面添加一个超级管理员试试看 3. 输入命令:db.addUser('s

【Mongodb】用户和认证 权限总结

开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库!   在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息!当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以--auth 参数启动),直到在admin.system.users中添

mongodb之用户/认证/角色/权限管理

前言 用户权限管理很重要,只给需要的权限,防止应用系统漏洞导致脱库 认证和授权 Authentication 认证识别,解决我是谁 Authorization 操作授权,我能做什么 认证机制 MONGODB-CR 官方自定义实现认证机制,通过用户名和密码,通过challenge-response方式,来识别和验证授权.SCRAM-SHA-1认证机制有更好的安全性,新版本默认使用SCRAM-SHA-1.不建议使用MONGODB-CR模式. SCRAM-SHA-1 3.0版本新加功能,Mongodb

Samba配置不同用户组不同用户的访问权限

引用自:https://blog.csdn.net/w657395940/article/details/20312053 1.首先服务器采用用户验证的方式,每个用户可以访问自己的宿主目录,并且只有该用户能访问宿主目录,并具有完全的权限,而其他人不能看到你的宿主目录. 2.建立一个caiwu的文件夹,希望caiwu组和lingdao组的人能看到,network02也可以访问,但只有caiwu01有写的权限. 3.建立一个lindao的目录,只有领导组的人可以访问并读写,还有network02也可