【问题标题】:Getting mongodb authentication failed error获取 mongodb 身份验证失败错误
【发布时间】:2012-05-17 04:58:13
【问题描述】:

我正在使用 playframework -v 1.2.4,并使用 morphia 插件。当我运行 play test 并连接 mongolab db 时,抛出异常并出现以下错误:

Oops: RuntimeException
An unexpected error occured caused by exception RuntimeException:
MongoDB authentication failed: mydb

我的application.conf如下..,

application.mode=dev
%prod.application.mode=prod
morphia.db.host=ds033187.mongolab.com
morphia.db.port=33187
morphia.db.username=demo
morphia.db.password=demo
morphia.db.name=mydb

但是上面的凭证可以连接mongodb

D:\mongodb-win32-i386-2.0.1\bin>mongo ds033187.mongolab.com:33187/mydb -u demo -p demo
MongoDB shell version: 2.0.1
connecting to: ds033187.mongolab.com:33187/mydb
>

但我得到了与 mongodb shell 的连接。为什么会出现这个错误?

【问题讨论】:

    标签: java playframework playframework-1.x mlab


    【解决方案1】:

    我假设您正在使用PlayMorphia 模块,并采用quick look at the documentation,它使用“morphia.db.seeds”而不是“morphia.db.host”。

    可能是因为没有指定“种子”,所以 morphia 模块正在连接到本地主机。

    【讨论】:

    • 它可以在本地主机上运行。但问题是使用“Mongolab”运行。 play框架是否支持mongolab
    • Play 位于 Morphia 之上,后者位于官方 Java Mongo 驱动程序之上。我不明白为什么不支持 mongolab。 Mongo协议比较简单,socket连接到你的电脑外后,mongolab应该是分不清是java客户端,还是终端客户端。
    【解决方案2】:

    有完全相同的问题。 我想你是通过

    添加用户的
    use admin
    db.addUser( "user", "pw" ) 
    

    然而,play morphia 似乎确实针对您正在使用的数据库进行身份验证,而不是针对管理数据库。以下解决了我的问题:

    /path/to/mongo
    use admin
    db.auth( "user", "pw" )
    use myDatabase
    db.addUser( "user", "pw" ) 
    

    现在应该可以了:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多