Ubuntu

連接到 MongoDB 的 Dockerized 實例時身份驗證失敗

  • December 17, 2016

我已經有很長一段時間連接到 MongoDB 的 Dockerized 實例。我能夠在本地開發機器上按照這些說明配置 MongoDB 容器,但相同的步驟似乎在生產中不起作用。

我創建、執行和連接到容器的具體步驟:

  1. 創建並執行容器

docker run --name prod-mongo -p 27017:27017 -d mongo --auth 2. 添加了初始使用者:

docker exec -it prod-mongo mongo admin

db.createUser({user:'skipper', pwd:'skipperspassword', roles:[{role:'userAdminAnyDatabase',db:'admin'}] }); 3. 從另一個 Mongo 容器成功連接到 Docker 容器:

docker run -it --rm --link prod-mongo:mongo mongo mongo -u skipper -p --authenticationDatabase admin prod-mongo/skippers-apps 4. 從 Docker 主機連接到 Docker 容器 失敗:mongo skippers-apps --authenticationDatabase admin -u skipper -p

這是我關心的最後一步。它適用於我的本地開發環境,但不適用於生產環境。

開發環境

  • 作業系統:Mac OS El Capitan
  • 核心版本 15.6.0
  • MongoDB 外殼版本:3.2.7
  • 碼頭工人版本:1.12.3

生產環境

  • 作業系統:Ubuntu 16.04.1 LTS
  • 核心版本:4.4.0
  • MongoDB 外殼版本:2.6.10
  • 碼頭工人版本:1.12.3

雖然我不確定為什麼我以前使用的 MongoDB 版本(2.6.10)不能很好地與 Docker 配合使用,但我能夠通過升級 MongoDB 客戶端的版本來解決這個問題。

我很想知道 2.6.10 客戶端無法連接到預設 Docker MongoDB 映像中的 MongoDB 伺服器的確切原因。

解決方案:將 MongoDB 客戶端從 2.6.10 升級到 3.2.11

引用自:https://serverfault.com/questions/820148