I’m running a local MongoDB server and am trying to connect to it from a node.js server using the Mongoose library.
I’m using SCRAM-SHA-1 as the authentication mechanism
I’m able to connect to it with the admin account when I don’t specify a database to connect to, using a connection string such as:
mongodb://{username}:{password}@{address}:{port}?authMechanism=SCRAM-SHA-256
But when I try to specify which database to connect to, using a connection string such as:
mongodb://{username}:{password}@{address}:{port}/database123?authMechanism=SCRAM-SHA-256
the authentication fails.
For reference, my code looks like:
const mongoose = require('mongoose');
let conn_string = `mongodb://mongo_uname:[email protected]:3000/database123?authMechanism=SCRAM-SHA-256`
mongoose
.connect(database_uri, {
useUnifiedTopology: true
})
.then(() => console.log('MongoDB database Connected...'))
.catch((err) => console.log(err))
Is there a different way to specify which database to connect to with mongoose, or is there something I can do differently when constructing the connection string to make it work?
Cheers.
4
Answers
My error ended up being in the configuration of the database user I was trying to connect with, they weren't even set up to read or write to the database I was attempting to connect to.
Please try
Note: twilight is database name
If you are using Mongoose v6+, you should NOT specify
useUnifiedTopology
.That is deprecated and if you include it, Mongoose will throw the error. Try to include the connection string only:
Make sure that the database user you are using is configured to read and write to the database uou are trying to connect to.