Docker MongoDB Невозможно войти как root - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь настроить монго с помощью докера, но я не знаю правильный способ входа в монго. Кажется, он не создал пользователя root по умолчанию, как я указал:

version: '3'
services:
  location-mongo-db:
    container_name: location-mongo-db
    image: mongo
    ports:
      - "27017:27017"
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
networks:
  default:
    external:
      name: environment_location-mongo

Я бегу

docker-compose -f docker-compose/db.yml -p location-mongo-db up -d --build 

Я тогда делаю

docker exec -it location-mongo-db sh 

, чтобы войти в оболочку и запустить # mongo изнутри контейнера. Я получаю следующее:

# mongo
MongoDB shell version v4.0.0
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.0
> show dbs
2018-06-28T15:45:36.337+0000 E QUERY    [js] Error: listDatabases failed:{
 "ok" : 0,
 "errmsg" : "command listDatabases requires authentication",
 "code" : 13,
 "codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:65:1
shellHelper.show@src/mongo/shell/utils.js:865:19
shellHelper@src/mongo/shell/utils.js:755:15
@(shellhelp2):1:1

Я не знаю, в чем проблема. Вот мой результат проверки списка пользователей:

> db.runCommand({connectionStatus : 1})
{
 "authInfo" : {
 "authenticatedUsers" : [ ],
 "authenticatedUserRoles" : [ ]
 },
 "ok" : 1
}

Чего не хватает? Я пытался подписаться несколькими способами с помощью -u root и -p и т. Д., Но пока ничего не работает

1 Ответ

0 голосов
/ 04 июля 2018

Когда вы запускаете клиент mongo без параметров по команде mongo, вы подключаетесь как пользователь без аутентификации, с очень ограниченными привилегиями. Правильная команда для подключения из вашего докера tty (и из вашего хост-терминала, поскольку вы предоставляете порт mongodb) с вашими учетными данными пользователя root:

mongo -u root -p example --authenticationDatabase admin

Чтобы полностью отключить соединение без аутентификации, вам нужно запустить процесс mongod с параметром --auth.

РЕДАКТИРОВАТЬ: Согласно документ , кажется, что с двумя переменными env MONGO_INITDB_ROOT_USERNAME и MONGO_INITDB_ROOT_PASSWORD, mongod в контейнере Docker должен начинаться с опции --auth автоматически ... но это поведение не работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...