在MongoDB中,服务启动默认是没有权限验证的,就安全性方面来说,这肯定是不行的,所以需要加上权限验证。

既然是要进行权限验证,那肯定是得有用户的吧,所以权限验证的第一步就是给MongoDB库添加用户。

启动MongoDB服务端,然后启动MongoDB客户端,在客户端使用命令给MongoDB库添加用户,看代码:

  1. > db.addUser("sa","123");
  2. {
  3. "user" : "sa",
  4. "readOnly" : false,
  5. "pwd" : "f7559cfe0bc0a305f82c0d83664538fd"
  6. }

小知识:在admin库里面添加用户是全局的,也就是说在admin中添加用户,在其他库里面也是适用的。

要给MongoDB的服务器端添加权限验证,需要在启动MongoDB的服务的时候添加--auth参数,代码如下:

  1. d:\mongodb\bin>mongod --dbpath d:\mongodb\data --logpath d:\mongodb\log\mongodb.log --logappend --serviceName MongoDB --auth --install
  2. all output going to: d:\mongodb\log\mongodb.log
  3. Creating service MongoDB.
  4. Service creation successful.
  5. Service can be started from the command line via 'net start "MongoDB"'.
  6. d:\mongodb\bin>net start "MongoDB"
  7. Mongo DB 服务正在启动 .
  8. Mongo DB 服务已经启动成功。
在这里我是以服务的方式启动MongoDB服务,第一条命令是安装服务,第二条就是启动服务了。

服务都已经启动了,那就剩下打开客户端了,这个就简单了,看代码:

  1. d:\mongodb\bin>mongo
  2. MongoDB shell version: 1.8.2
  3. connecting to: test
  4. > show dbs;
  5. Mon Oct 24 21:54:13 uncaught exception: listDatabases failed:{
  6. "assertion" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
  7. "assertionCode" : 10057,
  8. "errmsg" : "db assertion failure",
  9. "ok" : 0
  10. }
 
看到了吧,show dbs命令报异常了,再看异常的具体信息,unauthorized db:admin lock,权限验证不通过啊!

那好,下面就进行权限验证,这里唠叨一下,在进行权限验证的时候,先退出客户端,或者另起一个客户端,代码如下:

  1. d:\mongodb\bin>mongo admin -u sa -p 123
  2. MongoDB shell version: 1.8.2
  3. connecting to: admin
  4. > show dbs;
  5. admin   0.078125GB
  6. local   (empty)
  7. test    (empty)
命令格式:mongo [数据库名] -u [用户名] -p [密码]

上面的show dbs可以执行并看到结果了。

到此,权限验证的过程就算完成了。

MongoDB 权限 验证的更多相关文章

  1. Spring boot连接3.03以上的mongodb 权限验证问题

    由于3.0.3,mongodb加入了SCRAM-SHA-1校验方式,需要第三方工具配合进行验证,所有Spring boot连接MongoDB时会出现用户认证失败. 解决方法: > use adm ...

  2. MongoDB用户验证和权限管理

    官方参考页面: https://docs.mongodb.com/v3.6/tutorial/enable-authentication/ https://docs.mongodb.com/v3.6/ ...

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

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

  4. springboot、springsecurity、jwt权限验证

    1.背景 基于前后端分离项目的后端模块: 2.相关技术 springboot全家桶 web模块 security模块:用于权限的验证 mongodb 模块:集成mogodb模块 jwt 用于token ...

  5. MongoDB——权限管理

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

  6. 物联网架构成长之路(31)-EMQ基于HTTP权限验证

    看过之前的文章就知道,我之前是通过搞插件,或者通过里面的MongoDB来进行EMQ的鉴权登录和权限验证.但是前段时间发现,还是通过HTTP WebHook 方式来调用鉴权接口比较适合实际使用.还是实现 ...

  7. SpringBoot整合sa-token,完成网站权限验证

    sa-token是什么? sa-token是一个JavaWeb轻量级权限认证框架,其API调用非常简单,有多简单呢?以登录验证为例,你只需要: // 在登录时写入当前会话的账号id StpUtil.s ...

  8. ABP(现代ASP.NET样板开发框架)系列之18、ABP应用层——权限验证

    点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之18.ABP应用层——权限验证 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目 ...

  9. ASP.NET MVC View 和 Web API 的基本权限验证

    ASP.NET MVC 5.0已经发布一段时间了,适应了一段时间,准备把原来的MVC项目重构了一遍,先把基本权限验证这块记录一下. 环境:Windows 7 Professional SP1 + Mi ...

随机推荐

  1. OpenJudge 2813 画家问题 / Poj 1681 Painter's Problem

    1.链接地址: http://bailian.openjudge.cn/practice/2813 http://poj.org/problem?id=1681 2.题目: 总时间限制: 1000ms ...

  2. Navicat for mysql远程连接数据库详(1130错误解决方法)

    用Navicat for mysql连接数据库测试下连接 如果出现1130错误错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to ...

  3. Javascript中的迭代、归并方法

    迭代方法 在Javascript中迭代方法个人觉得尤为重要,在很多时候都会有实际上的需求,javascript提供了5个迭代方法来供我们操作,它们分别为: every() 对数组中的每一个项运用给定的 ...

  4. Python3 内建模块 datetime/collections/base64/struct

    datetime 我们先看如何获取当前日期和时间: >>> from datetime import datetime >>> now = datetime.now ...

  5. call_user_func_array

    call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数 参数 callback 被调用的回调函数. param_arr 要被传入回调函数的数组,这个数组得是索引 ...

  6. Microsoft Visual Studio 2010 Service Pack 1(exe)

    在线安装包:https://cid-3ca83445bd7767a0.office.live.com/browse.aspx/.Public/VS2010 ISO:http://download.mi ...

  7. lettcode-102:Binary Tree Level Order Traversal (Java)

    Binary Tree Level Order Traversal 二叉树的层序遍历 两种方式: 1.用两个queue交替表示每一层的节点 2.用两个node,一个表示当前层的最后一个节点,一个表示下 ...

  8. boost 编译

    备份一下,用的时候直接粘贴,免得到处找>_< 32 bjam threading=multi link=static runtime-link=static --stagedir=stag ...

  9. Linux PS 命令详解

    Linux操作系统PS命令详细解析 要对系统中进程进行监测控制,用 ps 命令满足你. /bin/ps ps 是显示瞬间行程的状态,并不动态连续:如果想对进程运行时间监控,应该用 top 工具. ki ...

  10. zepto源码学习-03 $()

    在第一篇的时候提到过关于$()的用法,一个接口有很多重载,用法有很多种,总结了下,大概有一以下几种 1.$(selector,context?) 传入一个选择器返回一个zepto对象 2.$(func ...