`
兩ting
  • 浏览: 75478 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

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中(HKEY_LOCAL_MACHINE-SYSTEM-CurrentControlSet-Services-MongoDB-ImagePath),我们修改一下,加入 -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来查看了。

分享到:
评论

相关推荐

    mongodb副本集测试用户验证.pdf

    mongodb的副本集基本的部署过程,采用的是配置文件再添加节点的方式。为应对mongodb的安全性问题,必须加上用户验证流程。附带上了添加不用权限用户验证的部署过程以及测试情况。

    express+mongoDB的一套后台管理系统.zip

    express+mongoDB的一套后台管理系统,实现功能:邮箱验证、注册、登录、jwt验证、用户管理、权限列表、角色列表、商品的增删改查、国际化管理(增删改查、批量添加、excel导入导出、导出js文件)、图片上传等 ...

    MongoDB安全配置详解

    1.MongoDB安装时不添加任何参数,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库,需以–auth参数启动。 2.在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,...

    基于Node.js的Express+MongoDB后台管理系统设计源码

    该项目为用户提供了一套基于Express和MongoDB的后台管理系统,实现了邮箱验证、注册、登录、JWT验证、用户管理、权限列表、角色列表、商品的增删改查、国际化管理(增删改查、批量添加、Excel导入导出、导出JS文件)...

    bearc-node:使用 nodejs + express + mongoDB 开发的后台管理系统服务端

    nodejs + express + mongoDB 开发的后台管理系统服务端客户端源码地址:功能注册、登录使用Mongodb储存数据密码加盐修改密码json-web-token权限验证token过期续签历史上的今天接口商品、客户以及收入列表的添加、删除...

    学习项目:根据Roshan先生的要求。 一个简单的网络项目,涉及用户,角色和权限,

    (目前) 以后,添加使直接消息传递成为可能的功能主持人: 可以踢或禁止用户。 可以向管理员报告任何问题。 可以通过单击按钮来警告普通聊天用户无法踢其他主持人,但可以向管理员报告行政可以分配主持人或取消其...

    news-scraper:新闻应用程序可从The Onion抓取文章

    作为经过身份验证的用户,我可以单击按钮以将文章添加到“保存的文章”标签中。 作为经过身份验证的用户,我可以在任何已保存的文章中添加注释。 作为经过身份验证的用户,我可以删除在任何保存的文章中创建的注释...

    基于webpack的社团管理系统服务端源码+项目说明.zip

    1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验!下载完使用问题请私信沟通。 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校...

    AluArt:店面+商店后端

    创建了一个店面,用户可以在其中创建帐户,将商品添加到购物车以及通过PayPal购买。 管理员帐户可以查看所有用户,订单和更新订单详细信息。 该应用程序将MongoDB用于数据库,将Express和Node用于后端React。 它还...

    商城(thinkphp5)

    (八)用户:用户列表、 用户组列表 (用户权限设置)、个人资料、用户密码修改 (九)资产:销售概况、商品分析、同行热卖、运营报告、销售排行 (十)微信端功能:首页顶部浮动块(一键关注按钮)、推广二维码、...

    pager:一个简单的活动页面运营发布系统

    使用方法克隆代码$ git clone https://github.com/laispace/pager.git安装依赖$ cd pager$ npm install开启mongodb $ sudo mongod需要预先创建好的寻呼机的数据库,并添加帐号为寻呼机密码为pass4pager的用户。...

    ssm框架鲜花完整项目前台后台实现包含sql

    7.供应商以及mongoDB模块:关联了供应商表,用户表,角色表 (1)进行普通的增删该查,条件查询。(1)进行普通的增删该查,条件查询。 (2)在spring中集合mongoDB,通过AOP切点切入mongoDB。 (3)针对log记录进行...

    appy-后端:一个引导您的应用程序的用户系统

    利用引导您的应用程序的...产品特点注册和帐户激活流程忘记密码和重置密码的登录系统社交登录滥用登录尝试检测基于角色和组的用户权限三种可选的身份验证策略通过Websocket聊天文件上传API 端点验证和查询支持Swagger文

    jetkit:动态网站生成器。 工作正在进行中

    捷杰 工作正在进行中 动态网站生成器 建立在以下之上: Express-服务器中间件 猫鼬+节点验证器-DB,ORM和验证 Hardwire-应用容器 ...JetKit安装后脚本向您的package.json添加了2个脚本: jk-boilerplate和jk-i

    springboot-ng:springboot+angular -- 17年5月停更

    6.token权限验证 7.session超时处理和httpsession监听器 8.bootstarp-Admin框架 9.记录登录者信息,存储在mongodb中.(使用到百度地图api中的IP精确定位) 已包含工具类: 1.ID生成器 2.日期处理 3.短信验证码发送...

    JsGen社区网站系统-其他

    4、用户帐号系统,关注(follow)用户/粉丝、邮箱验证激活、邮箱重置密码、SHA256加密安全登录、登录失败5次锁定/邮箱解锁、用户标签、用户积分、用户权限等级、用户阅读时间线等功能。用户主页只展现感兴趣的最新...

Global site tag (gtag.js) - Google Analytics