magicdict/MongoCola

Invalid credentials for database 'admin'

feiyan0320 opened this issue · 12 comments

使用管理帐户进入数据库,经过一段时间,会无休止的弹出这样的验证失败窗口。
************** 异常文本 **************
MongoDB.Driver.MongoAuthenticationException: Invalid credentials for database 'admin'. ---> MongoDB.Driver.MongoCommandException: Command 'authenticate' failed: auth fails (response: { "errmsg" : "auth fails", "ok" : 0.0 })
在 MongoDB.Driver.Internal.MongoConnection.RunCommand(String collectionName, QueryFlags queryFlags, CommandDocument command)
在 MongoDB.Driver.Internal.MongoConnection.Authenticate(String databaseName, MongoCredentials credentials)
--- 内部异常堆栈跟踪的结尾 ---
在 MagicMongoDBTool.UserController.ctlServerStatus.RefreshCurrentOpr()
在 MagicMongoDBTool.UserController.ctlServerStatus.<ctlServerStatus_Load>b__1(Object x, EventArgs y)
在 System.Windows.Forms.Timer.OnTick(EventArgs e)
在 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** 已加载的程序集 **************
mscorlib
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll

Mongo-Cola
程序集版本: 1.1.3.0
Win32 版本: 1.1.3.0

基本代码: file:///C:/MongoCola-1.13/MongoCola/Mongo-Cola.exe

System.Windows.Forms
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

MongoDB.Bson
程序集版本: 1.3.1.4349
Win32 版本: 1.3.1.4349

基本代码: file:///C:/MongoCola-1.13/MongoCola/MongoDB.Bson.DLL

System
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll

System.Drawing
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

System.Xml
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll

System.Configuration
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

xeyvazar
程序集版本: 1.1.3.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll

System.Core
程序集版本: 3.5.0.0
Win32 版本: 3.5.30729.6111 built by: Win8RTM

基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll

Accessibility
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll

System.Windows.Forms.resources
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.Windows.Forms.resources.dll

System.resources
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.resources.dll

MongoDB.Driver
程序集版本: 1.3.1.4349
Win32 版本: 1.3.1.4349

基本代码: file:///C:/MongoCola-1.13/MongoCola/MongoDB.Driver.DLL

mscorlib.resources
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.6111 (Win8RTM.050727-6100)

基本代码: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll

WindowsBase
程序集版本: 3.0.0.0
Win32 版本: 3.0.6920.6111 built by: Win8RTM

基本代码: file:///C:/Windows/assembly/GAC_MSIL/WindowsBase/3.0.0.0__31bf3856ad364e35/WindowsBase.dll

谢谢 ,我会找原因

能不能告诉我这个问题发生的过程。
这个问题应该是在每次刷新当前操作状态的时候发生的,这个事件3秒发生一次。
Command 'authenticate' failed: auth fails (response: { "errmsg" : "auth fails", "ok" : 0.0 })
应该是认证的时候发生错误了。应该是这个数据库需要Admin认证的,然后认证没有通过。
我刚才使用Admin登入一个数据库后没有发生这个问题,我不知道你是怎么登入数据库的。

当然,有一种情况我没有考虑到,就是一开始Admin的用户里面没有任何用户的时候,但是数据库是使用认证模式,这个时候使用非认证的方式也可以登录数据库。不过一旦加入第一个用户后就会出现错误。不知道是不是这个问题导致的。
就是使用需要认证的数据库,然后添加了第一个用户。

具体再现方法,请告诉我一下,谢谢您

我开始连接数据库的时候,没有admin的用户,是后来建的。

************** 异常文本 **************
System.IO.IOException: 无法从传输连接中读取数据: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。。 ---> System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- 内部异常堆栈跟踪的结尾 ---
在 MagicMongoDBTool.UserController.ctlServerStatus.RefreshCurrentOpr()
在 MagicMongoDBTool.UserController.ctlServerStatus.<ctlServerStatus_Load>b__1(Object x, EventArgs y)
在 System.Windows.Forms.Timer.OnTick(EventArgs e)
在 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

上次的问题,今天出现过两次。
今天是不断弹出的是这个问题,我看了下数据库是正常的

sorry,说错了,不是不断弹出,是三次,描述有点过分了

我开始连接数据库的时候,没有admin的用户,是后来建的。
应该是和我想象的一样,不过,可能由于版本问题,错误信息不同了。
这个问题的原因是一开始没有Admin数据库,这样的话,默认是验证的(即使你加了--auth)
然后,你添加了一个用户,OK,这样的话,后台刷新状态的时候,需要验证了。
然后由于我设计上的失误,没有在发生错误的时候关闭Timer刷新器,所以一直出现错误了。
我已经更新了程序,如果出现错误,关闭刷新功能,错误只会出现一次。
后面一个错误是因为超时造成的,服务器忙。你可以在设置连接的地方延长一下SocketTimeout,。
再次感谢你的帮助。

客气了,我下个新版本,我看你可以生成bug文本了,以后方便了

新版本还在修改中,这次准备加上Replset和Sharding的管理
以后第一层是连接名称,第二层是数据服务器,如果是Replset还将表示这个Replset里面的实际的物理服务器。
新版本只是一个实验性的版本,还有很多很多问题了。。。。O(∩_∩)O~
暂时别用在生产环境中。

收到,我最近在弄存储方面的东西,也正好多测试测试

我觉的与其做FORM版的,不如做WEB版的,

Web版本的确好,不过很多复杂的界面有点难做。
ASPNET倒是很熟悉,技术上不是问题,但是对于浏览器的兼容性,说老实话,实在怕了。
这样的工具做到后面肯定会涉及到大量的HTML,JS兼容性问题。
不想耗费大量的时间在这个上面,至少现在不会。
如果哪天,这个工具获得了成功,然后各方面都成熟了,可以考虑WPF或者Web版本(做成Web我也考虑过的,在一开始的时候,那个时候痴迷于HTML5,不过后来放弃了,还是老老实实先用老技术做一个版本)。

不好意思,我想问下:open doc in editor,这个从记录里取出显示到文档中的代码是在哪个文件中呢