【问题标题】:Setup authentication for instance mongoDB - DOCKER为实例 mongoDB 设置身份验证 - DOCKER
【发布时间】:2018-12-03 18:58:52
【问题描述】:

当我执行 docker-compose up -d mongoDB 容器运行时,我有一个 mongoDB 实例,他尝试从用户那里获取身份验证。

但我使用 docker-compose 并在其中设置了凭据,但是在运行 docker-compose up 时,用户未连接。

下面,你可以看到我的docker-compose.yml

version: "2"
services:
  web:
    image: kolacaine/docker-hello-world
    ports:
    - "80:8081"
    depends_on:
    - mongo-service
  mongo-service:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: myUserAdmin
      MONGO_INITDB_ROOT_PASSWORD: abc123
    command: mongod --auth
    ports:
    - "27017:27017"

什么也没发生,他总是在我的容器内要求身份验证。

【问题讨论】:

  • “他总是在我的容器内询问身份验证。” “他”指的是网络容器?
  • 不,对于mongo-service,当我运行 mongodb 的 shell 时,他总是要求我连接,但我将凭据设置到我的 docker-compose 中

标签: node.js mongodb docker docker-compose


【解决方案1】:

我想你误解了MONGO_INITDB_ROOT_USERNAME 和密码的用途,它们是用来创建一个默认的root 用户而不是提供预先填写的凭据。因此,要连接到 mongo shell,您需要使用 mongo -u myUserAdmin -p abc123

PS command: mongod --auth 是多余的,入口点脚本在看到您使用这两个环境时会自动执行此操作。

【讨论】:

  • 好的,但是当我没有2 envs 时,API 工作正常,但如果检测到他有2 envs,API 就不能工作。为什么?
  • @KolaCaine:因为您没有在客户端中指定任何身份验证信息
  • 因为现在连接mongo需要密码
  • 当我使用 HTTP 请求或其他方式调用我的 API 时,我总是需要精确的用户名和密码?
  • @KolaCaine 是的,这就是设置密码的关键,连接字符串如mongodb://usr:pwd@mongodb:27017/testdb
猜你喜欢
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2016-12-09
  • 2022-10-16
  • 2016-03-12
相关资源
最近更新 更多