Docker mongo auth SCRAM-SHA-1

时间:2019-01-06 10:11:04

标签: mongodb docker

系统

  

发布者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感到困惑。如何解决?

谢谢!

2 个答案:

答案 0 :(得分:0)

您的MongoDB Shell是旧版本(2.6.10),不支持SCRAM-SHA-1机制。较新的版本(在撰写本文时,最新版本为4.0.3)支持该功能,并默认将其激活。

您很有可能使用mongodb从官方Ubuntu仓库安装了sudo apt install mongodb软件包。请按照the MongoDB documentation for installing on Ubuntu中的说明安装官方mongodb-org软件包。

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

别忘了先按照文档所示,使用以下命令卸载您已经安装的软件包:

sudo apt remove mongodb
sudo apt purge mongodb

答案 1 :(得分:0)

尝试在mongod.conf文件(/etc/mongod.conf)中添加以下提到的部分

setParameter:
  authenticationMechanisms: PLAIN,SCRAM-SHA-256
  enableLocalhostAuthBypass: false

在这里,我们将身份验证机制设置为普通或SCRAM-SHA-256。 “ enableLocalhostAuthBypass:false”将确保从本地主机连接时不要绕过身份验证。