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
Best Answer
Found the solution, I didn't passed the authDatabase name, that's why the connection failed. Earlier i was using this
Now i used this
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 tomongoose.connect()
.