MongoDB为用户设置访问权限_MongoDB

MongoDB已经使用很长一段时间了,基于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来查看了。

时间: 2024-07-29 12:20:21

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

腾讯微博怎么设置访问权限

小编身边的微博还是挺多的,但是有些内容不想被部分人看到的话我们是可以设置访问权限的,方法很简单,只要按照以下方法步骤操作即可. 如何设置访问权限? 1.入微博,点击微博名字下面的设置. 2.在左边的选择"隐私设置"下方,选择"权限设置",如图: 3.把自己需要设置的选项前面的勾去掉.

QQ空间怎么设置访问权限

下面小编将以自己的QQ空间为例,向大家分别讲解在电脑上和手机上设置访问权限的方法. 一.电脑上QQ空间访问权限设置方法 第一步:那肯定是打开自己的QQ空间: 第二步:点击页面右上角的"设置"按钮,选择"权限设置",如下图所示: 第三步:重点来了,这一块大家根据自己的情况来进行选择: 第四步:设置好之后点击下面的保存按钮即可. 二.手机上QQ空间访问权限设置方法 第一步:依然是打开自己的QQ空间 第二步:点击右上角的"设置按钮": 第三步:点击&q

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

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

Windows Vista设置访问权限增强安全

在Windows Vista系统中"我的电脑"中点"组织"菜单下的"文件夹和搜索选项".在"文件夹和搜索选项"窗口中点"查看"标签,然后将"使用共享向导"前的对勾去掉,确定即可. 取消使用共享向导后点"高级共享"按钮后将出现对该共享资源的设置窗口,我们可以轻松的设置某账户对其的访问资源,添加多个账户不同访问权限.所有操作和xp中的一样,用户可以很容易上手,这里就不重复

电脑CD-ROM光驱怎么设置访问权限?

在多用户的电脑上,如果电脑管理员想要限定其它用户不能使用CD-ROM光驱,而只能由管理员使用,那要如何对电脑进行设定呢?解决这样的问题,可以进入注册表,找到CD-ROM光驱权限设置项,修改其值,就能做到,具体如何设置,请看下面操作步骤. 1,要进入注册表,有很多方法,最直接的方法是,在开始菜单中,打开"运行"程序. 2,然后在打开的运行编辑框中,输入regedit命令,再按"确定"按钮. 3,进入注册表编辑界面后,先打开"HKEY_LOCAL_MACHIN

一个设置访问权限的实例

一.目录结构: 二.编写页面: 三.servlet 四.filter 五.xml

Win8如何设置文件夹的访问权限?

  在公司或者在学校里,可能使用同一台电脑的人会有很多个.有时候自己的一些文件不想被别人看到,但我们又不能给电脑设密码,那么,这时候我们应该要怎么办呢?其实,我们可以通过对自己的文件夹设置访问权限来阻止别人看自己的文件夹.下面,小编就来教教大家Win8系统下设置文件夹访问权限的方法. 方法步骤 1.首先,将自己所有重要的文件全部集中到一个文件夹之中,这样集中起来比较好操作,不然的话每个文件夹去设置一次,就显得比较的麻烦了. 2. 双击打开整理好的文件夹,然后就可以看到上方任务栏中有一个共享,点击

批处理设置文件访问权限的方法分享_DOS/BAT

SetACL.exe 0.904 中文帮助: SetACL.exe下载地址示例: SetACL.exe c:\nihao /dir /deny everyone /read_ex 设置E:\wxDesktop 文件夹 everyone 用户为读取和运行权限 SetACL MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /registry /deny administrator /read 设置注册表键值Run 为完全控制权限 -----

使用Cacls命令设置服务器文件访问权限_服务器

Cacls命令使用格式如下: Cacls filename [/T] [/E] [/C] [/G user:perm] [/R user [...]] [/P user:perm [...]] [/D user [...]] Filename--显示访问控制列表(以下简称ACL): /T--更改当前目录及其所有子目录中指定文件的 ACL:/E-- 编辑 ACL 而不替换:/C--在出现拒绝访问错误时继续:/G user:perm--赋予指定用户访问权限.Perm 可以是R(读取).W(写入).C