Войдите в систему с правами root в контейнере Mongodb, созданном с помощью Docker compose. - PullRequest
0 голосов
/ 03 декабря 2018

Я создаю док-контейнер для сервера mongod, следуя предложенным здесь .Мой файл компоновки Docker выглядит следующим образом:

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 с помощьювыше верительные грамоты?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

В конце концов я пропустил только флаг authdb, поэтому следующая команда mongo решила мою проблему:

mongo -u "admin" -p "admin" --authenticationDatabase 'admin'
0 голосов
/ 03 декабря 2018

Есть несколько предварительных условий для настройки аутентификации на mongo:

  • Поместите эту строку в mongod.conf

    security:

    авторизация: включена

После этого перезапустите докер и выполните следующие действия:

  • Подключитесь к Монго через mongo
  • используйте admin
  • Создание пользователя

    {
        user: "root",
        pwd: "root",
        roles: [ { role: "userAdminAnyDatabase,readWriteAnyDatabase", db: "admin" } ]
    

    })

  • Выход из оболочки Mongo

    • Предоставление базы данных аутентификации для подключения кМонго:

Администратор Монго -u root -proot

...