指定数据库时验证失败错误

Posted

技术标签:

【中文标题】指定数据库时验证失败错误【英文标题】:Auth failed error when specifying database 【发布时间】:2014-12-10 11:27:54 【问题描述】:

我正在尝试从我的 Web 应用程序连接到 mongodb。但是,当我指定要连接到的数据库时,我从 mongo 获得了 auth failed error。如果我不指定db,那么to 连接成功。

我已经检查了拼写,如果数据库退出了 mongo 命令行show dbs

var dbURI = 'mongodb://root:pwd@localhost:27017/dbname';
mongoose.connect(dbURI, function(err) 
    if (err) throw err;
);

C:\Users\David\Documents\Bitbucket\productWebsite\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\base.js:245
        throw message;
              ^
MongoError: auth failed
    at Object.toError (C:\Users\David\Documents\Bitbucket\productWebsite\node_modules\mongoose\node_modules\mongodb\lib\mongodb\utils.js:114:11)
    at C:\Users\David\Documents\Bitbucket\productWebsite\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1130:31
    at C:\Users\David\Documents\Bitbucket\productWebsite\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1847:9
    at Server.Base._callHandler (C:\Users\David\Documents\Bitbucket\productWebsite\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\base.js:445:41)
    at C:\Users\David\Documents\Bitbucket\productWebsite\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\server.js:478:18
    at MongoReply.parseBody (C:\Users\David\Documents\Bitbucket\productWebsite\node_modules\mongoose\node_modules\mongodb\lib\mongodb\responses\mongo_reply.js:68:5)
    at null.<anonymous> (C:\Users\David\Documents\Bitbucket\productWebsite\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\server.js:436:20)
    at emit (events.js:95:17)
    at null.<anonymous> (C:\Users\David\Documents\Bitbucket\productWebsite\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\connection_pool.js:201:13)
    at emit (events.js:98:17)

我在 Windows 上使用 Bitnami 平均堆栈

谁能告诉我我忘记了什么?

【问题讨论】:

您是否将该身份验证添加到该数据库? 是的,我已经使用 Robomongo GUI 和本机 mongo 控制台连接到数据库。凭据有效 用户名或密码是否有需要转义的字符? ***.com/questions/14335978/… 作为后续,如果是这种情况,请考虑在连接时您必须在MongoClient 上设置uri_decode_auth 选项。 mongodb.github.io/node-mongodb-native/api-generated/… 我不使用特殊字符 【参考方案1】:

你可能想做这样的事情......

var opt = 
        user: config.username,
        pass: config.password,
        auth: 
            authdb: 'admin'
        
    ;

var connection = mongoose.createConnection(config.database.host, 'mydatabase', config.database.port, opt);

'authdb' 选项是您在其下创建用户的数据库。

【讨论】:

【参考方案2】:

根据我的经验,我发现原因可能是 mongoose 和 mongoDB 之间的版本差异。在我的 package.json 中,mongoose 版本是 3.8.5,而我的 mongoDB 版本是 3.0.4,我将 mongoose 版本 3.8.5 更改为 4.1。 5 并运行命令:

npm update

并运行了对我有用的应用程序。

【讨论】:

【参考方案3】:

您尝试对哪个数据库进行身份验证很重要。向创建用户的数据库进行身份验证。一旦通过身份验证,您可以切换到使用其他数据库。

【讨论】:

以上是关于指定数据库时验证失败错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 JPA 语法时,具有复杂键类的 JpaRepository 验证失败并出现错误“方法查询验证失败”

Citrix Studio问题:验证中央配置服务位置失败。原因:数据库已拒绝连接

使用嵌套数据更新 CoreData 对象时,RestKit 验证失败(Cocoa 错误 1550)

Zeppelin - LDAP 身份验证失败

Django,自定义身份验证登录。身份验证失败时如何显示错误消息?

swift 验证失败时,在 UITextField 中自动显示错误图标