在使用Docker compose创建的Mongodb容器上使用根凭据登录
我正在按照建议为mongod服务器创建一个docker容器。我的docker compose文件如下所示:在使用Docker compose创建的Mongodb容器上使用根凭据登录,mongodb,docker,docker-compose,Mongodb,Docker,Docker Compose,我正在按照建议为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
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 | }
当我尝试使用该用户的身份验证启动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的正确命令是什么?在mongo上配置身份验证有一些先决条件:
- 将该行放在mongod.conf中 安全: 授权:已启用
- 通过
mongo连接到mongo
- 使用管理员
- 创建用户
} ){ user: "root", pwd: "root", roles: [ { role: "userAdminAnyDatabase,readWriteAnyDatabase", db: "admin" } ]
- 出口Mongo外壳
- 提供身份验证数据库以连接到mongo:
mongo admin-u root-proot最后,我只丢失了authdb标志,因此以下mongo命令解决了我的问题:
mongo -u "admin" -p "admin" --authenticationDatabase 'admin'
您可以参考本文了解mongo身份验证