Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / NoSQL, Big Data Новый топик    Ответить
 MongoDB Docker auth  [new]
shalmaran
Member

Откуда:
Сообщений: 18
Хочу запустить сервер MongoDB в контейнере docker. Ставлю из официального репозитория. Делаю, как написано тут.
+=stack.yml
version: '3.3'


services:
mongo:
image: mongo
restart: always
ports:
- 27017:27017
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 12345678

mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: 12345678

Запускаю командой:
docker-compose -f stack.yml up

Контейнер разворачивается, даже пробегает строка:
mongo_1          | Successfully added user: {
mongo_1 | "user" : "root",
mongo_1 | "roles" : [
mongo_1 | {
mongo_1 | "role" : "root",
mongo_1 | "db" : "admin"
mongo_1 | }
mongo_1 | ]
mongo_1 | }

После чего я не могу подключиться к серверу с логином и паролем. Без логина и пароля подключаюсь, но не могу ничего сделать, т.к. не имею полномочий.

Как заставить нормально работать?
4 фев 19, 23:52    [21801621]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
Alexey Tomin
Member

Откуда: Самара
Сообщений: 1786
shalmaran,

Что знает "не могу"?

Какая команда подключения?
Какая ошибка?
5 фев 19, 14:53    [21801973]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
shalmaran
Member

Откуда:
Сообщений: 18
Какая разница, как подключаться? Ошибка одинаковая будет, выше написана, либо неправильная пара логин пароль, либо, требуется авторизация, если пытаться подключиться без логина.

Вот, например официальный клиент:
$ mongo -u root -p
MongoDB shell version v3.6.3
Enter password:
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.5
2019-02-05T15:36:35.846+0300 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

Если без -u и -p то на любое действие БД ответит:
019-02-05T15:39:14.729+0300 E QUERY    [thread1] Error: couldn't add user: command createUser requires authentication :
5 фев 19, 15:39    [21802006]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
Alexey Tomin
Member

Откуда: Самара
Сообщений: 1786
shalmaran
Какая разница, как подключаться?
$ mongo -u root -p


Разве не так надо?
$ mongo  --host mongo -u root -p
6 фев 19, 07:36    [21802319]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
shalmaran,

посмотрите статус сервиса, с какими параметрами он запущен?
что в логах?
6 фев 19, 08:35    [21802332]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
shalmaran
Member

Откуда:
Сообщений: 18
Alexey Tomin
shalmaran
Какая разница, как подключаться?
$ mongo -u root -p


Разве не так надо?
$ mongo  --host mongo -u root -p

Хост по умолчанию - 127.0.0.1. Ничего туда писать не надо в моем случае.
6 фев 19, 11:15    [21802478]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
bubuk
Member

Откуда:
Сообщений: 6
shalmaran,

mongo shell вы где запускаете? внутри докера или снаружи ?
7 фев 19, 14:07    [21803501]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
shalmaran
Member

Откуда:
Сообщений: 18
Снаружи пыталось. Оно не пускает из-за настроек моего. Но конфиг ей покинуть у меня тоже не получилось. Она падает с кодом 100, даже если я ей подсовываю её родной конфиг.
7 фев 19, 14:29    [21803529]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
bubuk
Member

Откуда:
Сообщений: 6
shalmaran
Снаружи пыталось. Оно не пускает из-за настроек моего. Но конфиг ей покинуть у меня тоже не получилось. Она падает с кодом 100, даже если я ей подсовываю её родной конфиг.

127.0.0.1 - это всегда местный хост. когда монго в контейнере - 127.0.0.1 внутри контейнера и снаружи - это два разных 127.0.0.1

есть две опции
1. зайдите внутрь контейнера и там запустите монго шелл
2. настройте-разбериться с сетью в контейнере и используйте внешний ip address контейнера
7 фев 19, 15:47    [21803623]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
shalmaran
Member

Откуда:
Сообщений: 18
У меня вообще проброс портов сделан. Так что с внешней стороны оно как раз 127.0.0.1. Там сейчас проблема немного в другом. Если коротко, то я не могу заставить сервер работать с моим конфигом. Вечером буду за тем компьютером, напишу конкретно. С телефона не удобно, да и логов с конфигами не представлю.
Как написано тут (https://stackoverflow.com/questions/37063662/docker-mongodb-config-file) не получается. Монго падает с ошибкой 100.
7 фев 19, 16:40    [21803691]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
bubuk
Member

Откуда:
Сообщений: 6
shalmaran
Вечером буду за тем компьютером, напишу конкретно.


Уж полночь близится, а Германа все нет... (с)
19 фев 19, 13:48    [21814294]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
shalmaran
Member

Откуда:
Сообщений: 18
Ха. Ну если это кому интересно, то оно заработало. Вот конфиги:

$ cat docker-compose.yml
version: '3.1'
services:
mongo:
image: 'mongo:latest'
volumes:
- './etc/mongo/mongod.conf:/etc/mongo.conf'
- './data/db:/data/db'
ports:
- '27017:27017'
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=12345678


$ cat ./etc/mongo/mongod.conf
# mongod.conf

# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:

# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

# network interfaces
net:
port: 27017
bindIp: 0.0.0.0


# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo

security:
authorization: enabled

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

Даже не знаю, что поменялось, но так всё ок.
20 фев 19, 12:06    [21815265]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
bubuk
Member

Откуда:
Сообщений: 6
shalmaran

volumes:
- './data/db:/data/db'
environment:
- MONGO_DATA_DIR=/data/db


$ cat ./etc/mongo/mongod.conf
storage:
dbPath: /var/lib/mongodb
path: /var/log/mongodb/mongod.log



Даже не знаю, что поменялось, но так всё ок.


Как-то странно выглядит это конфигурация - маппить одну папку, а в конфиге использовать другую для файлов бд... и ошибка 100 вроде как связана с путями/правами на них.
22 фев 19, 01:13    [21816944]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
shalmaran
Member

Откуда:
Сообщений: 18
Эта опция из стандартного конфига. Она переопределяется переменной окружения. Да, тут вы правы, не хорошо, надо убрать.
Я изменил лишь ip адрес, а это не заметил.
22 фев 19, 01:41    [21816948]     Ответить | Цитировать Сообщить модератору
 Re: MongoDB Docker auth  [new]
DrGonzo
Member

Откуда: ex-IBM
Сообщений: 191
Поскольку юзер создается в db admin, то подключаться надо так:
mongo -u root --authenticationDatabase admin -p
6 мар 19, 04:51    [21825872]     Ответить | Цитировать Сообщить модератору
Все форумы / NoSQL, Big Data Ответить