当前位置:首页 > 开发 > 数据库 > 正文

mongodb3.03开启认证

发表于: 2015-06-02   作者:21jhf   来源:转载   浏览:
摘要: 下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如下: (百度上搜到的基本都是老版本的,看到db.addUser的就是,请忽略) Windows下我做了一个bat文件,用来启动mongodb,命令行如下: mongod --dbpath db\data --port 27017 --directoryperdb --logp
下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如下:
(百度上搜到的基本都是老版本的,看到db.addUser的就是,请忽略)
Windows下我做了一个bat文件,用来启动mongodb,命令行如下:
mongod --dbpath db\data --port 27017 --directoryperdb --logpath db\logs\mongodb.log --logappend --auth
最后的参数就是开启和关闭认证,如果是conf配置文件,应该是auth=true或false
1,首先关闭认证,也就是不带--auth参数,启动mongodb
2,使用命令行进入mongodb目录,输入mongo命令,默认进入test数据库
3,use userdb  切换到自己的数据库,输入db,显示userdb
4,创建用户,角色为dbOwner,数据库为userdb,命令行应该是db.createUser({user:'myuser',pwd:'123456',roles:[{role:'dbOwner',db:'userdb'}]})
5,切换到admin数据库,use admin,db ,显示admin,db.shutdownServer()关闭服务器,填上认证参数,启动mongodb;以前的版本此时使用mongovue就可以使用myuser登录到userdb数据库上了,但是3.0.3版本不行,打开mongodb.log文件发现如下错误

authenticate db: userdb { authenticate: 1, nonce: "xxx", user: "myuser", key: "xxx" }
2015-06-02T09:57:18.877+0800 I ACCESS   [conn2] Failed to authenticate myuser@userdb with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document


此1-5步骤针对是3.0.3以前版本已经ok,如果是3.0.3,mongodb加入了SCRAM-SHA-1校验方式,需要第三方工具配合进行验证,下面给出具体解决办法:
首先关闭认证,修改system.version文档里面的authSchema版本为3,初始安装时候应该是5,命令行如下:
> use admin
switched to db admin
>  var schema = db.system.version.findOne({"_id" : "authSchema"})
> schema.currentVersion = 3
3
> db.system.version.save(schema)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

不过如果你现在开启认证,仍然会提示AuthenticationFailed MONGODB-CR credentials missing in the user document
原因是原来创建的用户已经使用了SCRAM-SHA-1认证方式
> use admin
switched to db admin
> db.system.users.find()
[...]
{ "_id" : "userdb.myuser", "user" : "myuser", "db" : "userdb", "credentials" : { " SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "XXXXXXXXXXXXXXXXXXXXXXXX", "storedKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX", "serverKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX" } }, "roles" : [ { "role" : "dbOwner", "db" : "userdb" } ] }

解决方式就是删除刚刚创建的用户,重新重建即可:
> use userdb
switched to db userdb
> db.dropUser("myuser")
true
>db.createUser({user:'myuser',pwd:'123456',roles:[{role:'dbOwner',db:'userdb'}]})
然后关闭服务器,开启认证,重启服务器,用mongovue连接,一切OK


此贴为原创,转载请注明出处,谢谢

mongodb3.03开启认证

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
由于大家比较朴实,将实验室服务器密码设置成了程序员都知道的。但最近有些实验室连续最近出现了非
前面写了一篇基于密码认证的ssh安全登录,那也只是为了防止密码被暴力破解采用的一个救急的方法。后
小米手机设置了图案锁屏,但是输入次数超过限制后会进入到账户解锁界面,并且再也无法返回图案锁屏
小米手机设置了图案锁屏,但是输入次数超过限制后会进入到账户解锁界面,并且再也无法返回图案锁屏
http认证- Basic 认证 最近项目上用到http认真过的basic认证。所以遇到这个问题,做事情心情不可急
1. 认证的作用 OSPF数据包可以通过认证来防止有意或无意地引入有害路由信息影响 认证作用两点: 1.
路由器配置: routerA: interface Serial1/0 ip address 192.1.1.1 255.255.255.0 serial restart-de
PPP认证 1..PAP 认证 特点: .pap为两次握手认证协议 .被认证方发起认证请求 .口令以明文传递 配置
EIGRP 认证 1. 实验目的 通过本实验可以掌握EIGRP 路由协议认证的配置和调试 2 :实验环境 如下图所
OSPF 认证 1. 实验目的 通过本实验可以掌握: (1)OSPF 认证的类型和意义 (2)基于区域的OSPF 简
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号