`
21jhf
  • 浏览: 130322 次
  • 来自: ...
社区版块
存档分类
最新评论

mongodb3.03开启认证

阅读更多
下载了最新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


此贴为原创,转载请注明出处,谢谢
3
0
分享到:
评论
4 楼 ctcxcn 2016-05-27  
有用,我之前也是一直遇到这个问题,查了很多资料都没有解决;最后看到日志输出然后在必应里搜出国外网站的解决办法,跟你说的一致:
use admin
db.system.users.remove({})    <== removing all users
db.system.version.remove({}) <== removing current version
db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 })

然后重新添加用户。
3 楼 xiang520jl 2015-12-03  
我按楼主的方式做了  但是 为什么当我连接的时候 不输入用户名、密码 也是可以连接的呢?
如果输入的用户名、密码不对 就连接不上。
我用的也是mongodb 3.0.3
2 楼 jacklin2015 2015-07-20  
1 楼 xb12369 2015-07-18  
终于找到你了


太好了



我的mongodb就是3.0.3

相关推荐

    mongodb source v3.03

    MongoDB v3.03是该软件的一个重要版本,提供了许多功能改进和性能优化。 首先,MongoDB的核心特性之一是其文档型的数据模型。这种模式允许存储JSON(JavaScript Object Notation)格式的数据,便于开发人员使用,...

    MongoDB集群部署&开启身份认证部署包

    简单打包分布式部署MongoDB集群,开启身份认证发布工具包示例。 使用参考博客地址 https://blog.csdn.net/csdn710924032/article/details/80713877 内附度盘

    mongodb数据库认证机制更改

    mongodb集群的认证机制的修改,经过一步一步尝试总结的方法,希望大家看看!

    aws MongoDB 开启TLS认证脚本

    aws MongoDB 开启TLS认证脚本,需进行修改,keytool import导入至java自带的密钥库。oracle jdk:$JAVA_HOME/jre/lib/security/cacerts openjdk:$JAVA_HOME/lib/security/cacerts

    MongoDB安全认证.pdf

    MongoDB 安全认证 MongoDB 安全认证是 MongoDB 中的安全机制,用于保护 MongoDB 数据库免受非法访问和操作。 MongoDB 安全认证可以分为单服务器认证和副本集认证两种情况。 单服务器认证 在单服务器中,MongoDB ...

    Linux下安装MongoDB复制集+用户认证,与Spring集成操作

    在Linux环境下,MongoDB的复制集安装和用户认证是一个关键的步骤,特别是在生产环境中,确保数据的安全性和高可用性。接下来我们将深入探讨这个过程,并结合Spring进行集成操作。 首先,让我们了解一下**MongoDB...

    MongoDB程序员认证: MongoDB Certified Developer Study Guide

    MongoDB程序员认证: MongoDB Certified Developer Study Guide - Study Guide - Exam Preparation - Practise Questions

    mongodb开启SSL传输加密

    标题"mongodb开启SSL传输加密"意味着我们将讨论如何在MongoDB环境中启用SSL连接,以提高网络通信的安全性。SSL/TLS协议通过创建一个加密链接,使得服务器和客户端之间的通信能够保持私密性和完整性。 首先,你需要...

    Mongodb 3.2.9开启用户权限认证问题的步骤详解

    在 MongoDB 3.2.9 中开启用户权限认证是确保数据安全的关键步骤。通过创建具有特定权限的用户,你可以限制对数据库的访问,防止未授权的操作。遵循上述步骤,你将能够成功地在 MongoDB 实例中实施用户权限认证。记住...

    mongodb副本集加分片集群安全认证使用账号密码登录

    mongodb副本集加分片集群安全认证使用账号密码登录

    关于Mongodb 认证鉴权你需要知道的一些事

    MongoDB 是一款流行的开源文档型数据库,其默认情况下在启动时不开启任何认证,这意味着任何人都可以访问和修改数据库,这无疑给数据库的安全性带来了风险。在遭受黑客攻击后,了解并实施MongoDB的认证鉴权机制变得...

    MongoDB之conf配置文件详解

    MongoDB的安全认证是指mongoDB服务器的认证方式。这个设置非常重要,因为它将影响mongoDB的安全性。在生产环境中,通常将安全认证设置为true,以提高安全性。 九、详细记录输出(verbose) MongoDB的详细记录输出...

    MongoDB开启权限认证的方法步骤详解

    然而,为了保障数据安全,MongoDB 提供了权限认证机制,防止未经授权的访问。默认情况下,MongoDB 在安装后是允许无权限访问的,这意味着任何知道如何连接到数据库的人都可以读取或修改数据。因此,启用权限认证对于...

    mongodb7.0.0安装包

    8. 安全性:默认情况下,MongoDB不开启任何安全措施。为了生产环境的安全,你应该设置访问控制,如添加用户、启用身份验证以及配置网络访问规则。 9. 日志管理:MongoDB允许配置日志文件,以便跟踪和分析服务器的...

    docker部署mongodb并开启远程连接

    docker run --name mongodb -v ~/docker/mongo:/data/db -p 27017:27017 -d mongo 执行上述命令之后, 一个挂载了 mongo镜像的容器就开始运行了 其中 --name 设置了容器的名字 -v 设置了路径的映射, 将本地路径映射...

    mongodb Windows7 64位

    打开命令提示符,以管理员身份运行,执行`mongod --config "C:\Program Files\MongoDB\Server\&lt;version&gt;\bin\mongod.cfg" --service install`来安装服务,然后用`net start MongoDB`启动服务。 3. **连接MongoDB** ...

    linux安装mongodb教程

    /usr/local/mongodb/mongodb-linux-2.0.7/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/mongodb-linux-2.0.7/logs/mongodb.log --logappend --port=27017 --fork 知识点 6:配置...

    关于单台MongoDB实例开启Oplog的过程详解

    在多节点副本集中,Oplog是默认开启的,但在单台MongoDB实例中,通常不直接启用Oplog。然而,出于特定需求,如数据抽取或故障恢复,单实例开启Oplog也是可行的。 开启单台MongoDB实例的Oplog主要分为以下几个步骤:...

    MongoDB常用命令批处理

    4. **MongoDB带授权认证**: - `install_auth.bat`:这可能是用于设置MongoDB身份验证的脚本。在MongoDB中启用身份验证可以增加安全性,防止未经授权的访问。这通常涉及到修改`mongod.conf`配置文件,添加用户和...

Global site tag (gtag.js) - Google Analytics