Инициализация с новыми пользователями через скрипт js initdb - PullRequest
0 голосов
/ 13 марта 2019

Я создал контейнер док-станции Mongo с дополнительным js-скриптом:

ADD graylog.js /docker-entrypoint-initdb.d/graylog.js

Сценарий создает двух пользователей:

root = db.getSiblingDB('root');
root.createUser(
  {
    user: "root",
    pwd: "pass",
    roles: [
      { role: "dbOwner", db: "admin" }
    ]
  }
);

graylog = db.getSiblingDB('graylog');
graylog.createUser(
  {
    user: "graylog",
    pwd: "vWGzncmBe9",
    roles: [
      { role: "dbOwner", db: "graylog" }
    ]
  }
);

К сожалению, даже с одним пользователем (первым), подключение базы данных и перечисление доступных баз данных не работает:

client = MongoClient('mongodb://root:pass@localhost:27017/')
client.list_database_names()

Ошибка аутентификации

И действительно, в журналах сервера Монго я вижу, что root не может войти в систему. graylog также не работает с graylog сервером.

Я сделал это с совершенно новым / чистым томом, и я могу подтвердить, что настройка MONGO_INITDB_ROOT_USERNAME / MONGO_INITDB_ROOT_PASSWORDразрешает перечислять базы данных.

Документация о том, как это сделать, не очень понятна.mongoldb 3 может разрешить bth переменные окружения и скрипт, но теперь работает только одна из них, и только если mongo не инициализирован.

Так как же настроить пользователей из этого скрипта?

Редактировать:

Добавление стартовых журналов Монго:

2019-03-13T20:01:03.891+0000 I SHARDING [initandlisten] Marking collection local.system.replset as collection version: <unsharded>
2019-03-13T20:01:03.892+0000 I SHARDING [initandlisten] Marking collection admin.system.roles as collection version: <unsharded>
2019-03-13T20:01:03.892+0000 I SHARDING [initandlisten] Marking collection admin.system.version as collection version: <unsharded>
2019-03-13T20:01:03.893+0000 I SHARDING [initandlisten] Marking collection local.startup_log as collection version: <unsharded>
2019-03-13T20:01:03.893+0000 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2019-03-13T20:01:03.894+0000 I SHARDING [initandlisten] Marking collection admin.system.users as collection version: <unsharded>
2019-03-13T20:01:03.894+0000 I SHARDING [initandlisten] Marking collection config.system.sessions as collection version: <unsharded>

Нет указаний о дополнительных пользователях :( Интересно, стоит ли делать это вручную позже!

...