So i spent quite a bit of time pulling my hair out trying to connect to our MongoLab account at work with a command line shell. I followed the instructions here but no for some reason mongoDB would always return: Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails"}
My user name and password were coming from my database under the users collections which worked fine with my Node.js driver but wouldn't work with my shell.
The question is: where does one find the correct user name and password to connect to MongoLabs with the mongodb shell.
Turns out the user name and password to connect and authorize with the shell aren't found in MongoLabs but in Azure's portal.
Log into your Azure account, in the left column scroll down to Add-Ons and click.
You should see a MongoLab's. Go ahead and click on that.
From there click on Connection Info at the bottom of the window and it will display a string similar to this:
mongodb://username:password#ds012345.mongolab.com:56789/mongolab
go ahead and copy and paste that username and password into your shell with this command :
mongo ds012345.mongolab.com:56789/dbname -u dbuser -p dbpassword
NOTE: Your command will look different because you're using a different MongoLabs account.
Related
I have created a user and added my IP to whitelist.
when trying to connect to a cluster through mongo shell, i am required to enter the following line: mongo "mongodb+srv://cluster0.****.mongodb.net/" --username --password
I have filled in credentials for username and password and replaced dbname with my database name(tried using non-existing one as well in case that was the problem). it connects to the shell, but then crashes with the following error:
Error while trying to show server startup warnings: user is not allowed to do action [getLog] on [admin.]
MongoDB Enterprise atlas-7cwf8s-shard-0:PRIMARY>
tried googling and youtubing the issue, but cannot find the match on how to fix it.
Many thanks
That message says that the shell is unable to show you server startup warnings. It's expected in Atlas environment.
Supposing that's your own cluster, then:
Check the user in Atlas > Database Access
Check the MongoDB Roles header in the table.
If it's not atlas Admin, you can't issue this command:
db.adminCommand({getLog:"startupWarnings"})
Or any admin command, which is issued or tested automatically in the connection, hence the error.
Edit MongoDB Roles to the highest privileges (atlas Admin)
But you can still work anyways.
If you're accessing someone else's cluster, then there isn't much to do.
Here is the database I am trying to install (comes with 4 short instructions very easy to follow): https://github.com/toddwschneider/nyc-taxi-data
I used git clone to bring the repository down to my vm. And next I cd into it and run initialize_database.sh. Here is what happens:
pic of terminal
the password I am trying to use is the one provided by my Bitnami Launchpad, which says the admin user is postgres, but when I work on it it says kzherbert, my google account. I have tried su postgres but its not a user on the server so it doesnt work like that. I can use postgres password for psql -U postgres, which will take me to the psql terminal. Also, I have tried using my google account password as well and it does not work. What really interests me about the picture is where the shapefile is relevant and why it repeats and doesnt allow me to exit
Any and all help is greatly appreciated.
The problem is that the database you are trying to install (Unified New York City Taxi and Uber data) assumes you're installing PostreSQl from scratch instead of using the one included in the Bitnami Image.
The script you're using assumes that the user to connect the database is the same that the System User you're using to connect to your server via SSH (kzherbert in your case). However, the password you're trying to use is the one for the user postgres.
You need to connect to PG using the password Google provided you and the user postgres and the create an user kzherbert with the password you desire.
I have a very simple Mlab account and I'm trying to connect via command line with this command:
mongo server_name.mlab.com:port/inventory -u <dbuser> -p <dbpassword>
but I keep running into this problem:
2016-05-26T15:41:18.195+0200 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed
How do I get rid of this and how can I connect to mlab easily?
I think that you're using your mLab credentials. You must set a DB User at the User Tab like this:
If (like me) you were positive that you were using the correct credentials for the database and for some reason you were still getting the Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } thing, here's what I did.
First check your version of mongo.
$ mongo --version
If it is less than 3.x.x congratulations, you've found the problem.
For my linux users out there, go here to update your mongo. After that your connection should succeed!
I had the same problem, if your username and password is correct then the issue connecting is your firewall blocking certain ports.
Use a different internet connection and it will work.
Make sure to create a user with a different username and password than your mLab account.
In addition to Rafa's answer, if you choose to create a user with the same username and password as your mLab account (which is what I did to save myself from remembering another username and password), you will also not be able to connect.
Upon deleting that user and creating a new one, I was immediately able to connect.
I would like to drop into the mongo shell in the terminal on my MacBook. However, I'm interested in connecting to a Mongo instance that is running in the cloud (compose.io instance via Heroku addon). I have the name, password, host, port, and database name from the MongoDB URI:
mongodb://username:password#somewhere.mongolayer.com:10011/my_database
I have installed mongodb on my MacBook using Homebrew not because I want Mongo running on my Mac, but just to get access to the mongo shell program in order to connect to this remote database.
However, I can't find the right command to get me the full shell access I would like. Using instructions found here http://docs.mongodb.org/manual/reference/program/mongo/ (search for "remote") I am able to get what looks like a connection, but without giving my username or password I am not fully connected. Running db.auth(username, password) returns 1 (as opposed to "auth fails" when I provide incorrect username and password), but I continue to get an "unauthorized" error message when issuing the show dbs command.
You are probably connecting fine but don't have sufficient privileges to run show dbs.
You don't need to run the db.auth if you pass the auth in the command line:
mongo somewhere.mongolayer.com:10011/my_database -u username -p password
Once you connect are you able to see collections?
> show collections
If so all is well and you just don't have admin privileges to the database and can't run the show dbs
With Mongo 3.2 and higher just use your connection string as is:
mongo mongodb://username:password#somewhere.mongolayer.com:10011/my_database
Another way to do this is:
mongo mongodb://mongoDbIPorDomain:port
I registered for a free sandbox database on MongoHQ.
As I am starting to use mongoDB I thought it would be a good idea to connect to MongoHQ database from the mongo console and run some commands before using it in any program.
I tried connecting to my database using:
Here testuser is my username and 123456 is my password (I know posting user id and passowrd on forums is bad, this user is temporary and will be deleted by me later).
mongo oceanic.mongohq.com:10076/tnh_data -u testUser -p 123456
and I got this:
MongoDB shell version: 2.4.9
connecting to: oceanic.mongohq.com:10076/tnh_data
Hoping that everything is running fine I tried running a few commands, but I am getting a not authorized error.
> show dbs
Sat Apr 19 22:00:18.090 listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46
> use learn
switched to db learn
> db.collection0.insert({name: 'Harry', gender: 'Male'})
not authorized for insert on learn.collection0
Please help me what am I doing wrong ?
Just for the information. I created the users using the web interface on mongoHQ.
When using MongoHQ sandbox plans and logging in from the console, there are a couple of things that are at play:
When you connected, using the string above, you are already in your database (tnh_data)
You do not have admin-level access, so "show dbs" will not work in MongoDB console.
So, in MongoDB console, connect again using the same string you started with and, once connected, run this command: "show collections".
Also, without trying to switch to another database, run your insert again. It should work normally this time.
Hope this information is helpful!