首页 > 解决方案 > Docker mongo 身份验证 SCRAM-SHA-1

问题描述

系统

发行商 ID:Ubuntu
描述:Ubuntu 16.04.5 LTS
版本:16.04

我的 docker-compose.yml

version: "3"
services:
  mongo:
    image: mongo
    container_name: mongodb
    environment:
      - MONGO_INITDB_ROOT_USERNAME=test1
      - MONGO_INITDB_ROOT_PASSWORD=test1
      - MONGO_DATA_DIR=/data/db
    ports:
      - 27017:27017
    volumes:
      - ./data/db:/data/db
    command: [--auth]

我尝试访问 mongo:

mongo -u test1 -p'test1' --port 27017 --authenticationDatabase admin

它给出了一些错误:

MongoDB shell version: 2.6.10
connecting to: 127.0.0.1:27017/test
2019-01-06T17:06:39.987+0700 Error: 2 { ok: 0.0, errmsg: "Auth mechanism not specified", code: 2, codeName: "BadValue" } at src/mongo/shell/db.js:1287
exception: login failed

所以我尝试使用特定的身份验证机制:

mongo -u test1 -p'test1' --port 27017 --authenticationDatabase admin --authenticationMechanism SCRAM-SHA-1

它也给出了一些错误:

MongoDB shell version: 2.6.10
connecting to: 127.0.0.1:27017/test
2019-01-06T17:07:44.967+0700 Error: 2 SCRAM-SHA-1 mechanism support not compiled into client library. at src/mongo/shell/db.js:1287
exception: login failed

我对错误消息感到困惑SCRAM-SHA-1 mechanism support not compiled into client library. at src/mongo/shell/db.js:1287。如何解决?

谢谢!

标签: mongodbdocker

解决方案


您的 MongoDB shell 是不支持 SCRAM-SHA-1 机制的旧版本 (2.6.10)。更新的版本(截至撰写时最新的是 4.0.3)支持它并默认激活它。

您很可能mongodb使用sudo apt install mongodb. 按照MongoDB 文档中的说明在 Ubuntu上安装以安装官方mongodb-org软件包。

确保首先备份可能因卸载mongodb软件包而受到影响的所有数据。

不要忘记首先卸载已安装的软件包,如文档所示,使用:

sudo apt remove mongodb
sudo apt purge mongodb

推荐阅读