一直使用公司的mongodb环境,本地的mongodb没有开启认证,为了环境更一致,决定加上本地mongodb的认证,不过在这个过程中发生了点波折。

我使用的是window版本的3.2,公司使用的是2.6的版本,在认证上是有区别的,mongodb从3.0版本开始加入了SCRAM-HAS-1方式,但是PHP里不支持,支持的2.X版本里的MONGODB-CR模式,这个就需要修改下配置了。有人说在配置文档里加 setParameter

setParameter:
authenticationMechanisms: MONGODB-CR

需要注意一点,配置文件的缩进是用空格的,制表符会报错的。

但是没有起作用,可能针对3.2之前的版本可以吧,也或者某些细节没注意到,然后继续靠网络和文档,发现了另一种方法,需要下面6步骤:

为了兼容 .0之前的版本,需要进行下面几步
、在不开启auth的模式进入mongo
use admin;
db.createUser({user:'shang',pwd:'shang',roles:[{role:'root',db:'admin'}]});//因为不执行这一步,db.system.version里不会有数据
、修改 authcurrentVersion
var schema = db.system.version.findOne({'_id':'authSchema'});
schema.currentVersion=;
db.system.version.save(schema);
、需要drop掉之前使用 SCRAM-HAS- 认证的用户 shang
db.dropUser('shang');
、以不开启auth的模式重启后创建新的用户
db.shutdownServer();
mongo.exe
use admin;
db.createUser({user:'shang',pwd:'shang',roles:[{role:'root',db:'admin'}]});//现在创建的是使用 MONGODB-CR认证的用户
、以开启 auth的模式重启
use admin;
db.auth('shang', 'shang');
、现在还可以创建其他用户
use robo;
db.createUser({user:'robo',pwd:'robo',roles:[{role:'readWrite',db:'robo'}]});//经测试,使用Robomongo连接,选择两种认证都可以联通

后来发现起始修改的是 参数 authSchemaVersion 不知道直接在配置文件里加入下面的代码可行吗?可以找时间试试,经证实不可以,会提示 “BadValue: Cannot use --setParameter to set "authSchemaVersion" at startup”。

setParameter:
authSchemaVersion:

下面还有关于配置文件和使用配置文件安装到window服务和启动的命令

配置文件 mongo.cfg
systemLog:
destination: file
path: D:/mongodb/data/log/mongod.log
storage:
dbPath: D:/mongodb/data/db
net:
bindIp: 127.0.0.1
port:
security:
authorization: enabled
setParameter:
authenticationMechanisms: MONGODB-CR
enableLocalhostAuthBypass: false
logLevel: 使用配置文件启动和安装到window服务
mongod.exe --config D:/mongodb/mongod.cfg --install
net start MongoDB
net stop MongoDB

最后说下关于认证里面的角色

基本的角色
userAdminAnyDatabase 这个角色拥有分配角色和用户的权限,但没有查写的缺陷
root 这是超级管理员
readWrite 有读写权限
read 有读权限 关闭服务
db.shutdownServer();

Mongodb3.X版本的 的用户认证的更多相关文章

  1. auth用户认证库

    关于auth库,建议如下:1. ion_auth,基于Redux重写而成,非常不错的认证库,国外用的很多,几个最新的ci2.0.2基础上的开源系统(如doveforum)都用它,支持ci 2.0和以上 ...

  2. SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  3. Django 中的用户认证

    Django 自带一个用户认证系统,这个系统处理用户帐户.组.权限和基于 cookie 的 会话.本文说明这个系统是如何工作的. 概览 认证系统由以下部分组成: 用户 权限:控制用户进否可以执行某项任 ...

  4. Tornado web.authenticated 用户认证浅析

    在Web服务中会有用户登录后的一系列操作, 如果一个客户端的http请求要求是用户登录后才能做得操作, 那么 Web服务器接收请求时需要判断该请求里带的数据是否有用户认证的信息. 使用Tornado框 ...

  5. [SharePoint 2010]关于基于声明(Claims)的用户认证模式

    转:http://blog.csdn.net/zw_2011/article/details/7417132 SharePoint 2010在用户认证模式上,较之以前的版本有了非常大的改变.在Shar ...

  6. Postgres的用户认证

    我们先来讲讲postgresql的用户认证吧. 我想我们有必要明白以下几个问题: 第一.postgresql的用户和操作系统的用户没有任何直接的的关系.虽然在postgaresql的初始安装中,它会有 ...

  7. mongodb 安装到创建用户,认证auth,httpinterface

    今天花了一天时间来解开这个mongodb的谜团,如果有遇到了其他的问题,可以咨询我. #开始 2.6.10安装方式 不同版本后面设置用户权限方式有所差异#下载这个版本的mongodb mongodb- ...

  8. 社交系统ThinkSNS+ APP更新至V0.8.3---新增打赏、用户认证

    一.ThinkSNS简介 目前社交系统ThinkSNS(简称TS)有两个版本并行: ThinkSNS V4----最新版本ThinkSNS V4.6.1,第一次发布时间为2015年7月15日,最近更新 ...

  9. 社群系统ThinkSNS V4.5.29 APP更新发布,新增用户认证及系统消息

    社群系统ThinkSNS V4版本移动端APP将于7月29日更新发布,本次更新修复部分bug,最主要是增加了移动端APP的用户认证功能,以及添加了系统消息,为V4.5.29版本发布.这两个功能PC端的 ...

随机推荐

  1. gen_server的一些猜测

    1. exit(Pid,Reason)貌似不会引起gen_server的terminate()的执行. 猜测依据:erlang编程指南的第十二章的272页 终止   当从 回调函数中的一个收到stop ...

  2. 阮一峰---javascript系列

    2013.05.11:如何做到 jQuery-free?(29条评论) 2013.01.23:JavaScript Source Map 详解(14条评论) 2013.01.14:Javascript ...

  3. git for c#, commit本地,pushserver

    //ok private static void push() { string wkDir = @"E:\DotNet2010\单位project\Git.Client\lib2Test\ ...

  4. swift开发之--报错:Class "***ViewController" has no initializers

    因为Swift中要求变量或常量在声明时就要初始化其值,所以我们在实际开发中,声明变量或常量时使用可选类型. ?!1234 var stitle : UILabel?var webview : UIWe ...

  5. mysql 中实现行变列

    前言: mysql行列变化,最难的就是将多个列变成多行,使用的比较多的是统计学中行变列,列变行,没有找到现成的函数或者语句,所以自己写了存储过程,使用动态sql来实现,应用业务场景,用户每个月都有使用 ...

  6. 微信小程序 ui框架(辅助)

    WeUi: https://weui.io/ https://github.com/weui/weui-wxss/ Wa-Ui: https://github.com/liujians/Wa-UI/w ...

  7. Effective C++ —— 杂项讨论(九)

    条款53 : 不要轻忽编译器的警告 请记住: 1. 严肃对待编译器发出的警告信息.努力在你的编译器的最高(最严苛)警告级别下争取“无任何警告”的荣誉. 2. 不要过度倚赖编译器的报警能力,因为不同的编 ...

  8. Win 10安装Python及环境变量配置

    一.Windows系统 很多童鞋问之前的教程怎么没有介绍安装python3.5的,现予以补充更新一下. (一)安装python3.5 1.下载 进入Python官网www.python.org,在“D ...

  9. java基础---->多线程之Daemon(五)

    在java线程中有两种线程,一种是用户线程,另一种是守护线程.守护线程是一种特殊的线程,当进程中不存在非守护线程了,则守护线程自动销毁.今天我们通过实例来学习一下java中关于守护线程的知识.我是个平 ...

  10. 【文智背后的奥秘】系列篇——基于CRF的人名识别

    版权声明:本文由文智原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/133 来源:腾云阁 https://www.qclou ...