sunitj
sunitj

Reputation: 1245

Authentication in mongoose using SCRAM-SHA-1

I recently upgraded from MongoDB 2.6 to 3.0.4 and also upgraded the Mongoose version to 4.0.0.

Now when ever i try to connect to mongo using mongoose:

mongoose.connect('mongodb://user:password@host:port/dbname')

On mongo logs i receive this message

SCRAM-SHA-1 authentication failed for user on dbname from client xxx.xxx.xxx.xxx

I checked in mongodb, the user exists in the admin. The command that i used is db.system.users.findOne({user:'user'})

The information returned by this statement contains SCRAM-SHA-1 information.

My question is how to specify SCRAM related information in mongoose while establishing connection. I read lots of articles, but failed to understand how its done

Upvotes: 9

Views: 15957

Answers (3)

sunitj
sunitj

Reputation: 1245

Found the solution, I didn't passed the authDatabase name, that's why the connection failed. Earlier i was using this

mongoose.connect('mongodb://user:password@host:port/dbname')

Now i used this

mongoose.connect('mongodb://user:password@host:port/dbname?authSource=dbWithUserCredentials')

Found this solution on Discussion thread of Mongoose itself

Edit:

Don't forget to replace dbWithUserCredentials with your own. In most cases dbWithUserCredentials would be admin. All the credentials for login like username, password are already specified in the parameter passed to mongoose.connect().

Upvotes: 15

Andrei
Andrei

Reputation: 7607

Changed to Mongoose version 4.0.3 and it works.

Upvotes: 0

YaTaras
YaTaras

Reputation: 5329

I had a similar problem. It was fixed after updating mongoose to v4.1.11.

Upvotes: 6

Related Questions