我正在按照here的建议为mongod服务器创建一个docker容器。我的docker compose文件如下所示:
version: '3.2'
services:
mongo:
container_name: mongo
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: admin
volumes:
- ./data:/data/db
ports:
- "27017:27017"
然后我使用docker compose命令构建并运行容器:
docker-compose up --build
在启动日志中,我可以看到正在创建的用户:
mongo | 2018-12-03T04:40:00.562+0000 I STORAGE [conn2] createCollection:
admin.system.users with generated UUID: ...
mongo | Successfully added user: {
mongo | "user" : "admin",
mongo | "roles" : [
mongo | {
mongo | "role" : "root",
mongo | "db" : "admin"
mongo | }
mongo | ]
mongo | }
当我尝试使用该用户的auth启动mongo时,我收到授权错误:
mongo -u "admin" -p "admin"
2018-12-03T04:47:34.752+0000 E QUERY [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1608:20
@(auth):6:1
@(auth):1:2
exception: login failed
使用上述凭据连接到mongo的正确命令是什么?
答案 0 :(得分:0)
在mongo上配置身份验证需要满足一些先决条件:
将此行放入mongod.conf
安全性:
授权:已启用
此后,重新启动docker并执行以下步骤:
mongo
连接到mongo 创建用户
{
user: "root",
pwd: "root",
roles: [ { role: "userAdminAnyDatabase,readWriteAnyDatabase", db: "admin" } ]
} )
退出Mongo shell
mongo admin -u root -proot
答案 1 :(得分:0)
最后,我只缺少authdb标志,因此以下mongo命令解决了我的问题:
mongo -u "admin" -p "admin" --authenticationDatabase 'admin'