Я создал контейнер док-станции 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>
Нет указаний о дополнительных пользователях :( Интересно, стоит ли делать это вручную позже!