Как использовать исключение mongodb localhost? - PullRequest
0 голосов
/ 03 октября 2018

Из документации :

Исключение localhost позволяет включить управление доступом, а затем создать первого пользователя в системе .За исключением localhost, после включения контроля доступа подключитесь к интерфейсу localhost и создайте первого пользователя в базе данных администратора .Первый пользователь должен иметь права для создания других пользователей, например, пользователь с ролью userAdmin или userAdminAnyDatabase .

Поэтому я запускаю последнюю версию Монго свключен контроль доступа (--auth):

docker run -p 27017:27017 mongo --auth

подключиться к моей оболочке и попытаться создать пользователя admin :

mongo
MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2
> use admin
switched to db admin
> db.createUser(
...   {
...     user: "admin",
...     pwd: "password",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
...   }
... )
2018-10-03T15:29:30.234+0200 E QUERY    [js] Error: couldn't add user: command createUser requires authentication :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1491:15
@(shell):1:1

Что я делаю не так

1 Ответ

0 голосов
/ 03 октября 2018

Вы подключаетесь не к localhost, а к экспортированному порту.Чтобы исключение работало, вам необходимо подключиться к локальному хосту из контейнера.Например:

docker exec -it `docker ps --filter ancestor=mongo --format "{{.ID}}"` mongo
...