loopback mongodb Authentication failed
Asked Answered
G

1

6

I have an empty loopback app, where I added a model and a mongodb datasource.

When connecting, I get the following error:

Web server listening at: http://0.0.0.0:3000
Browse your REST API at http://0.0.0.0:3000/explorer
Connection fails:  { [MongoError: Authentication failed.]
  name: 'MongoError',
  message: 'Authentication failed.',
  ok: 0,
  code: 18,
  errmsg: 'Authentication failed.' }
It will be retried for the next request.

/media/[...]/node_modules/mongodb/lib/mongo_client.js:454
              throw err
              ^
MongoError: Authentication failed.
    at Function.MongoError.create (/media/[...]/node_modules/mongodb-core/lib/error.js:31:11)
    at /media/[...]/node_modules/mongodb-core/lib/topologies/server.js:778:66
    at Callbacks.emit (/media/[...]/node_modules/mongodb-core/lib/topologies/server.js:95:3)
    at null.messageHandler (/media/[...]/node_modules/mongodb-core/lib/topologies/server.js:249:23)
    at Socket.<anonymous> (/media/[...]/node_modules/mongodb-core/lib/connection/connection.js:265:22)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at readableAddChunk (_stream_readable.js:153:18)
    at Socket.Readable.push (_stream_readable.js:111:10)
    at TCP.onread (net.js:531:20)

The db runs in a docker. I can connect to it via "MongoClient"

datasources.js:

{
    "mongodb_dev": {
        "name": "mongodb_dev",
        "connector": "mongodb",
        "host": "127.0.0.1",
        "database": "some-db",
        "username": "mongouser",
        "password": "pass",
        "port": 27017
    }
}
Generatrix answered 11/5, 2016 at 15:21 Comment(9)
Are you sure of those credentials ?Casting
Also, does the issue happens immediately at server boot, or after when you use the REST API ?Casting
On server boot. Yes I am sure - that's why I wrote that I can connect via MongoClient, so it's also not a port issue.Generatrix
Do you have a boot script that performs an autoupdate or automigrate of the database ? If yes, could you post it ?Casting
In order to remove the error , goto datasources.json and update the username & password as empty string and then try and connect. I have the same issue, trying to find out the root cause.Hyaloid
@Generatrix how did u fix this issue currently i am facing the same can you post your answerMistress
@Mistress as far as I remember, the problem was not recoverable. I had to switch to a different DB (I used postgresql in docker) and it worked. I think it was some loopback component that was not ready for it and didn't seem to be in the foreseeable future (not sure about that though).Generatrix
thanks to @ViswasMenon and Alexander for posting this question i spent more than 2hrs on this. after setting the username and password as empty string it worked. If i want username and password to be set then how to do.Mistress
thank you, it worked for empty strings ^_^ @ViswasMenonPostfix
S
7

The following might be the reason for this error.

  1. You are authenticating against one database and using some other database for your application. In your mongoClient you might be configured auth db as "admin" so you can connect without error.

If so you can solve this by creating users in your database by using

use application dbname
db.createUser(
   {
     user: "username",
     pwd: "password",
     roles: [ "readWrite", "dbAdmin" ]
   }
)

And use this credential for connecting your database

Sporades answered 19/3, 2017 at 17:51 Comment(1)
thanks it worked for me can you explain about roles in createUserPersephone

© 2022 - 2024 — McMap. All rights reserved.