下载了最新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
此贴为原创,转载请注明出处,谢谢
分享到:
相关推荐
MongoDB v3.03是该软件的一个重要版本,提供了许多功能改进和性能优化。 首先,MongoDB的核心特性之一是其文档型的数据模型。这种模式允许存储JSON(JavaScript Object Notation)格式的数据,便于开发人员使用,...
简单打包分布式部署MongoDB集群,开启身份认证发布工具包示例。 使用参考博客地址 https://blog.csdn.net/csdn710924032/article/details/80713877 内附度盘
mongodb集群的认证机制的修改,经过一步一步尝试总结的方法,希望大家看看!
aws MongoDB 开启TLS认证脚本,需进行修改,keytool import导入至java自带的密钥库。oracle jdk:$JAVA_HOME/jre/lib/security/cacerts openjdk:$JAVA_HOME/lib/security/cacerts
MongoDB 安全认证 MongoDB 安全认证是 MongoDB 中的安全机制,用于保护 MongoDB 数据库免受非法访问和操作。 MongoDB 安全认证可以分为单服务器认证和副本集认证两种情况。 单服务器认证 在单服务器中,MongoDB ...
在Linux环境下,MongoDB的复制集安装和用户认证是一个关键的步骤,特别是在生产环境中,确保数据的安全性和高可用性。接下来我们将深入探讨这个过程,并结合Spring进行集成操作。 首先,让我们了解一下**MongoDB...
MongoDB程序员认证: MongoDB Certified Developer Study Guide - Study Guide - Exam Preparation - Practise Questions
标题"mongodb开启SSL传输加密"意味着我们将讨论如何在MongoDB环境中启用SSL连接,以提高网络通信的安全性。SSL/TLS协议通过创建一个加密链接,使得服务器和客户端之间的通信能够保持私密性和完整性。 首先,你需要...
在 MongoDB 3.2.9 中开启用户权限认证是确保数据安全的关键步骤。通过创建具有特定权限的用户,你可以限制对数据库的访问,防止未授权的操作。遵循上述步骤,你将能够成功地在 MongoDB 实例中实施用户权限认证。记住...
mongodb副本集加分片集群安全认证使用账号密码登录
MongoDB 是一款流行的开源文档型数据库,其默认情况下在启动时不开启任何认证,这意味着任何人都可以访问和修改数据库,这无疑给数据库的安全性带来了风险。在遭受黑客攻击后,了解并实施MongoDB的认证鉴权机制变得...
MongoDB的安全认证是指mongoDB服务器的认证方式。这个设置非常重要,因为它将影响mongoDB的安全性。在生产环境中,通常将安全认证设置为true,以提高安全性。 九、详细记录输出(verbose) MongoDB的详细记录输出...
然而,为了保障数据安全,MongoDB 提供了权限认证机制,防止未经授权的访问。默认情况下,MongoDB 在安装后是允许无权限访问的,这意味着任何知道如何连接到数据库的人都可以读取或修改数据。因此,启用权限认证对于...
8. 安全性:默认情况下,MongoDB不开启任何安全措施。为了生产环境的安全,你应该设置访问控制,如添加用户、启用身份验证以及配置网络访问规则。 9. 日志管理:MongoDB允许配置日志文件,以便跟踪和分析服务器的...
docker run --name mongodb -v ~/docker/mongo:/data/db -p 27017:27017 -d mongo 执行上述命令之后, 一个挂载了 mongo镜像的容器就开始运行了 其中 --name 设置了容器的名字 -v 设置了路径的映射, 将本地路径映射...
打开命令提示符,以管理员身份运行,执行`mongod --config "C:\Program Files\MongoDB\Server\<version>\bin\mongod.cfg" --service install`来安装服务,然后用`net start MongoDB`启动服务。 3. **连接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:配置...
在多节点副本集中,Oplog是默认开启的,但在单台MongoDB实例中,通常不直接启用Oplog。然而,出于特定需求,如数据抽取或故障恢复,单实例开启Oplog也是可行的。 开启单台MongoDB实例的Oplog主要分为以下几个步骤:...
4. **MongoDB带授权认证**: - `install_auth.bat`:这可能是用于设置MongoDB身份验证的脚本。在MongoDB中启用身份验证可以增加安全性,防止未经授权的访问。这通常涉及到修改`mongod.conf`配置文件,添加用户和...