Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

connect to a mongodb instance without "--authenticationDatabase admin"

Tags:

mongodb

So I got my mongodb instance ready, open for remote connections.

From some reason, I'm unable to connect it with a user/pass without --authenticationDatabase admin added to the connection string.

When I try to perform the connection with the user/pass alone (without "authenticationDatabase", I get:

2015-02-01T16:07:24.818-0500 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed
like image 229
Yos Avatar asked Feb 03 '15 22:02

Yos


People also ask

How do I connect to MongoDB remotely?

MongoDB can be managed remotely or connected to a separate application server by making a few changes to the default configuration. First, we'll install the MongoDB using the docker container, then configure the MongoDB installation to access from a trusted remote machine securely.

How do I access MongoDB on localhost?

By default, MongoDB starts at port 27017. But you can access it in a web browser not at that port, rather, at a port number 1000 more than the port at which MongoDB is started. So if you point your browser to http://localhost:28017, you can see MongoDB web interface.

How does MongoDB connect to local instance?

To connect to your local MongoDB, you set Hostname to localhost and Port to 27017 . These values are the default for all local MongoDB connections (unless you changed them). Press connect, and you should see the databases in your local MongoDB.


1 Answers

This is because the user credentials are stored in the admin database and not in the default database where the mongo shell connects to (test).

You can change this with the connection URL:

With the admin database:

$ mongo localhost/admin --username user -p
MongoDB shell version: 2.6.9
Enter password:
connecting to: localhost/admin
replset:PRIMARY>

Without a specific database (test by default):

$ mongo localhost --username user -p
MongoDB shell version: 2.6.9
Enter password:
connecting to: localhost
2015-04-22T15:34:28.743+0100 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1260
exception: login failed

With --authenticationDatabase:

$ mongo localhost --username user --authenticationDatabase admin -p
MongoDB shell version: 2.6.9
Enter password:
connecting to: localhost
replset:PRIMARY>

Note that using --host will not assume the database name is the one after the / (slash:

$ mongo --host localhost/admin --username user -p
MongoDB shell version: 2.6.9
Enter password:
connecting to: localhost/admin:27017/test
2015-04-22T15:37:40.703+0100 starting new replica set monitor for replica set localhost with seeds admin:27017
2015-04-22T15:37:40.703+0100 [ReplicaSetMonitorWatcher] starting
2015-04-22T15:37:40.920+0100 getaddrinfo("admin") failed: nodename nor servname provided, or not known
2015-04-22T15:37:40.922+0100 warning: No primary detected for set localhost
2015-04-22T15:37:40.922+0100 All nodes for set localhost are down. This has happened for 1 checks in a row. Polling will stop after 29 more failed checks
2015-04-22T15:37:40.923+0100 Error: connect failed to replica set localhost/admin:27017 at src/mongo/shell/mongo.js:148
exception: connect failed
like image 54
Gianfranco P. Avatar answered Oct 07 '22 09:10

Gianfranco P.