指定数据库时,Auth失败错误

时间:2014-10-15 11:40:26

标签: node.js mongodb mean-stack

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

我检查了拼写,数据库是否以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)

我正在使用Bitnami Mean stack for Windows

有人能告诉我我忘了什么吗?

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:5)

您可能想要做这样的事情......

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

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

&#39; authdb&#39; option是您在其下创建用户的数据库。

答案 2 :(得分:3)

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

npm update

并运行了适用于我的应用程序。