mongodb - 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
。如何解决?
谢谢!
解决方案
您的 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
推荐阅读
- python - 按字母顺序加载 JSON 文件 - Django
- c++ - C++ 在编译时交换定义
- entity-framework - dbset 上没有扩展方法 ToList - 真的吗?
- mongodb - 当并非所有字段都有值时加入字段
- mysql - 创建视图时如何解决空值
- c++ - Why assignment to the function type gives an error?
- swift - Xcode 迫使我解开一个非可选的值
- python - 在数据框中替换列值的正确方法是什么?
- mongodb - 创建一个新字段,该字段将包含来自 mongoDB 现有字段中文本搜索的部分内容
- javascript - Instantiating Objects from Inside the Static Method in JavaScript