lenhhoxung lenhhoxung - 3 months ago 15
Python Question

Connect mongodb from Python in authorized mode

I've created a user for my database in mongodb. I've tested with mongo shell to make sure that the user has proper privileges to access the database.
Now I want to use my Python program to access the database, and I use PyMongo. If I run mongod in unauthorized mode (without option

--auth
), the Python client works fine. However, when I use
--auth
option, the Python client doesn't work any more. In fact, it reports
unauthorized error
, which is easy to understand because I didn't change anything in the code. Here is the code to connect my
test
database:

from pymongo import MongoClient
client = MongoClient()
db = client.test
cursor = db.restaurants.find()
for document in cursor:
print(document)


My question is how can I change the Python code to use username/password created previously? I've looked at the client documentation but there is not information for it.

Answer
client = MongoClient("mongodb://username:password@server/dbname")

This is the normal format for telling the client where and how to connect. The way you are using (with no parameters at all) defaults to a local mongo install, on the default port, with no authentication.

Comments