mongodb 非 admin 库 认证登陆失败 原因(百度好多都 是渣)db.addUser() 请走开。

首先先晒一下log 日志错误信息

2016-07-13T22:19:43.667+0800 I ACCESS   [conn4]  authenticate db: finddemo { aut
henticate: 1, nonce: "xxx", user: "user1", key: "xxx" }
2016-07-13T22:19:43.668+0800 I ACCESS   [conn4] Failed to authenticate [email protected]
ddemo with mechanism MONGODB-CR: AuthenticationFailed: UserNotFound: Could not f
ind user [email protected]
2016-07-13T22:20:12.555+0800 I ACCESS   [conn2] SCRAM-SHA-1 authentication faile
d for user1 on finddemo from client 127.0.0.1 ; UserNotFound: Could not find use
r [email protected]
2016-07-13T22:20:17.127+0800 I NETWORK  [initandlisten] connection accepted from
 127.0.0.1:56103 #5 (4 connections now open)
2016-07-13T22:20:17.127+0800 I ACCESS   [conn5]  authenticate db: admin { authen
ticate: 1, nonce: "xxx", user: "root", key: "xxx" }
2016-07-13T22:20:17.146+0800 I NETWORK  [initandlisten] connection accepted from
 127.0.0.1:56104 #6 (5 connections now open)
2016-07-13T22:20:17.146+0800 I ACCESS   [conn6]  authenticate db: admin { authen
ticate: 1, nonce: "xxx", user: "root", key: "xxx" }

着重看一下 这个报错信息,

SCRAM-SHA-1 authentication failed for user1 on finddemo

这是什么鸟?

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 })  

下面是获取到的用户的相关信息

{ "_id" : "admin.root", "user" : "root", "db" : "admin", "credentials" : { "MONGODB-CR" : "97a156792bd180dc82cec9a56d838991" }, "roles" : [ { "role" : "__system", "db" : "admin" } ] }
{ "_id" : "finddemo.finddemo", "user" : "finddemo", "db" : "finddemo", "credentials" : { "MONGODB-CR" : "4b8dce39de95d553473c1998f43aa165" }, "roles" : [ { "role" : "dbOwner", "db" : "finddemo" } ] }

重新连接,成功。

可以查看一下链接介绍:

https://docs.mongodb.com/master/release-notes/3.0-scram/

还有国外友人的回答:(越来越鄙视百度党)

http://stackoverflow.com/questions/29006887/mongodb-cr-authentication-failed

  

时间: 2024-07-30 00:59:22

mongodb 非 admin 库 认证登陆失败 原因(百度好多都 是渣)db.addUser() 请走开。的相关文章

MongoDB在admin库下面执行了db.dropAllUsers()导致没有管理权限要如何处理

测试的时候在amin库下面执行了db.dropAllUsers()操作,然后所有管理员用户都没有了,执行什么操作都提示Error: not authorized on admin to execute command...下面来介绍一下出现这种情况要如何处理 先来看一下当前mongo实例的配置文件: cat /etc/mongo.cnf systemLog: destination: file logAppend: true path: /data/mongodata/log/mongo.log

mongodb3.0副本集搭建补充~~非admin数据库的用户权限

之前有搭建mongodb3.0的副本集,不过当时直接使用的admin数据库,用户也是直接给的root. 链接:http://blog.csdn.net/tuzongxun/article/details/51723259 最近想要把数据移到非admin数据库上,便重新以非admin库创建用户,过程大致和之前的一样,但创建用户的时候还是遇到了一些问题,主要是在用户角色和权限上. 我搭建过程中参考了下边的用户权限相关的博客: http://blog.csdn.net/tuzongxun/articl

dlopen Linux 动态库失败原因与解决办法总结

1.dlopen 动态库失败原因,我碰到主要是以下几点(碰到新问题之后再完善,先打个点) ①动态库位置没有放对地方,dlopen 时候找不到你想操作的动态库 解决办法:放到指定目录. ②头文件没有包全,有不能识别的函数或者标识符 解决办法:加一条打印信息,程序运行到这里,会输出不能识别标识符. if((handle = dlopen(myso, RTLD_NOW)) == NULL) { printf("dlopen - %sn", dlerror()); exit(-1); } 或者

SSH 免密码登陆失败的一种原因,StrictModes

偶然因素帮别人配置ssh免密码登陆失败, ~/.ssh目录权限700,其下所有文件权限600,却依然失败.ssh -v 后发现密钥验证未通过,使用密码验证. 后来还是搜索得来,有人把ssh的StrictModes关闭就可以了,赶紧试了一下,果然可以. 于是搜了一下StrictModes限制的什么, 找到这么一段话 StrictModes no #修改为no,默认为yes.如果不修改用key登陆是出现server refused our key(如果StrictModes为yes必需保证存放公钥的

Mongodb主从复制开启安全认证

2.1.1部署mongodb主从实例: Mongodb-master实例 环境:mongodb-master 配置文件先注释掉验证参数:#auth = true 启动mongodb-master 然后设置admin库登陆账户和密码: [[email protected] logs]# mongo127.0.0.1:27017 MongoDB shell version: 3.0.5 connecting to: 127.0.0.1:27017/test > use admin; switched

【Mongodb】用户和认证 权限总结

开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库!   在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息!当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以--auth 参数启动),直到在admin.system.users中添

mongodb3.2集群认证登陆

继mongodb3.2复制集和shard集群之后的用户认证登陆. 1:关于mongos登录权限认证配置 [[email protected] keyfile]$ openssl rand -base64 741 > /data/keyfile/zxl [[email protected] keyfile]$ chmod 600 /data/keyfile/zxl 2:把/data/keyfile/zxl文件拷贝到各个机器/data/keyfile/目录下即可 切记属主和组以及文件权限600 3:

MongoDB安全及身份认证

前面的话 本文将详细介绍MongoDB安全相关的内容 概述 MongoDB安全主要包括以下4个方面 1.物理隔离 系统不论设计的多么完善,在实施过程中,总会存在一些漏洞.如果能够把不安全的使用方与MongoDB数据库做物理上的隔离,即通过任何手段都不能连接到数据库,这是最安全的防护.但,通常这是不现实的.一些重要的数据可能会保存下来,放置到物理隔离的机房中 2.网络隔离 许多公司的开发机处于内网环境中.即使数据库存在漏洞,外部环境也没有机会利用,因为根本无法访问内网 3.防火墙隔离 可以利用防火

如何在linux中部署mongodb并设置连接认证

在windows上给mongodb设置连接认证权限:mongodb默认是不认证的,默认没有账号,现在就讲讲怎么设置账户和密码 1.首先进入C:\mongodb\bin下面双击运行mongo.exe启动数据库. 2.接下来在mongo.exe中先创建用户管理员代码如下: 2.1先进admin数据库 命令:use admin 2.2在admin数据库下进行超级用户的登录验证 命令:db.auth("ultra","123456")//返回 1 表示登录成功 2.3在超级