mongodb设置访问权限

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-10-10 19:12:13

mongodb设置访问权限的相关文章

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

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

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

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

MongoDB设置访问权限、设置用户、在Java中用户名密码访问

以下操作基于Windows平台 1.启动MongoDB服务 mongod.exe --dbpath d:\mongodb-win32-x86_64-2.2.2\data --logpath d:\mongodb-win32-x86_64-2.2.2\log\mongo.log --auth [--auth]:代表需要根据权限访问,必须加此参数启动服务,客户端才能以用户名密码方式建立连接 2.启动Mongo控制台 mongo D:\mongodb-win32-x86_64-2.2.2\bin>mo

MongoDB为用户设置访问权限

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

OpenVPN使用MySQL验证并设置访问权限

目录: 安装OpenVPN (http://fengwan.blog.51cto.com/508652/1404435) 配置OpenVPN使用MySQL验证(http://fengwan.blog.51cto.com/508652/1786556) 针对不同用户配置不同权限 背景: 公司使用OpenVPN作为远程接入工具,但是缺乏统一用户管理,缺乏审计功能,同时VPN登录后默认可以访问所有服务器的所有功能及端口,所以在VPN的使用人数上进行限制,但终归治标不治本. 现提出: 测试人员:只能访问

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

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

Nginx网站服务搭建——基础服务、设置访问权限

Nginx Nginx是一款高性能,轻量级web服务软件,其稳定性高.系统资源消耗低, 对HTTP并发连接的处理能力高. 常用命令 实验步骤 1.远程获取Windows上的源码包,并挂载到Linux上2.解压源码包.下载安装环境包3.创建程序用户并配置Nginx服务相关组件4.编译安装5.优化Nginx服务启动脚本,并建立命令软连接6.使用浏览器访问192.168.235.158,即可访问到Nginx服务的首页7.制作service管理脚本 [[email protected] nginx-1.

vsftpd给root设置访问权限

Linux下安装vsftpd之后,默认的配置是匿名用户可以登录,匿名帐户有两个:用户名:anonymous密码:空 用户名:ftp密码:ftp 如果要用匿名进行上传删除等操作需要配置其它参数. 本篇文章主要是设置如何让root用户可以登录的.因为默认配置是不行. 主要在vsftpd.conf的两个参数控制userlist_enable和pam_service_name默认userlist_enable是YES的状态,pam_service_name是vsftpd 在/etc/vsftpd.ftp

装饰器(执行原函数前后可以有些操作)常用于设置访问权限

1. 需要先知道的知识点 # python是从上到下执行的 def f1(): print(123) def f2(): print(456) #这是执行f1() 输出456 # 函数整体是可以当做参数进行传递的 def f1(): print('123') def f2(xxx): xxx() f2(f1) # f1未加括号,相当于f1这个函数整体 解释器功能: 1. 自动执行@函数,并将其下面的函数名当作参数传递 2. 将@函数的返回值,重新赋值给下面的函数 在多层装饰器的情况下: 解释->