Michael Paccione
Michael Paccione

Reputation: 2817

PyMongo Auth Failure: {'ok': 0.0, 'errmsg': 'Authentication failed.', 'code': 18, 'codeName': 'AuthenticationFailed'

Curious thing, I am running SLS Python Lambdas in a Docker container with the MongoDB instance in a separate container. I am able to authenticate from an exposed port on my host to connect to the instance.

However, from inside SLS container for whatever reason it does not want to connect :S

# mongodb://root:password@mongodb/test_db?retryWrites=true&w=majority
db_uri = "mongodb://" + usr + ":" + pwd + "@" + url + "/test_db?retryWrites=true&w=majority"
client = pymongo.MongoClient(db_uri)

db = client[mongo_db_name]
collection = db[mongo_collection_name]
version: "3.8"
services:
  mongodb:
    image : mongo
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=password
      - MONGO_INITDB_DATABASE=test_db
      - PUID=1000
      - PGID=1000
    ports: 
      - "27000:27017"
    restart: unless-stopped
    volumes:
      - ./mongodb/init.js:/docker-entrypoint.initdb.d/init.js

  python:
    build: python
    depends_on:
      - mongodb
    ports: 
      - "3000:3000"
    restart: unless-stopped
    volumes:
      - ./python:/usr/src/app

Upvotes: 6

Views: 14641

Answers (1)

Michael Paccione
Michael Paccione

Reputation: 2817

Needed to add authSource (https://pymongo.readthedocs.io/en/stable/examples/authentication.html#default-database-and-authsource)

db_uri = "mongodb://" + usr + ":" + pwd + "@" + \
    url + "/test_db?authSource=admin&retryWrites=true&w=majority"

Upvotes: 8

Related Questions