Ограничение аутентификации MongoDB для базы данных - PullRequest
0 голосов
/ 15 марта 2019

У меня есть база данных с именем flowers, в которой у меня есть коллекция с именем flower.Когда я впервые создал его в MongoDB, у меня не было установленной аутентификации (я просто подключился бы к нему через порт по умолчанию: 27017 и localhost).

Тогда я хотел ограничить доступ к этой базе данных, чтобы получить доступ только с набором имени пользователя и пароля.Сначала я создал admin в базе данных admin:

> use admin
switched to db admin
> db.createUser(
...   {
...     user: "myUserAdmin",
...     pwd: "abc123",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
...   }
... )
Successfully added user: {
        "user" : "myUserAdmin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}
> show users
{
        "_id" : "admin.myUserAdmin",
        "user" : "myUserAdmin",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}

Затем я вышел из mongo и перезапустил службу.Затем я создал пользователя для своей базы данных:

> use flowers
switched to db flowers
> db.createUser(
...   {
...     user: "adminfl",
...     pwd: "flower1",
...     roles: [ "dbOwner", "readWrite"]
...   }
... )
Successfully added user: { "user" : "adminfl", "roles" : [ "dbOwner", "readWrite" ] }

После этого я снова вышел из mongo, перезапустил службу .... из Compass я попытался подключиться к базе данных flowers, используя имя пользователя и пароль, иукажите authentication database: flowers.К этому моменту все прошло хорошо.

Моя проблема: когда я подключаюсь к mongo, используя аутентификацию, я вижу все базы данных, и когда я подключаюсь без аутентификации, у меня тот же результат.

Как я могу сделать свою базу данных flowers видимой только при подключении с помощью имени пользователя и пароля?

Обновление: это мой mongod.cfg:

# mongod.conf

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

# Where and how to store data.
storage:
  dbPath: C:\Program Files\MongoDB\Server\4.0\data
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  C:\Program Files\MongoDB\Server\4.0\log\mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:


#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Попробуйте добавить строку ниже, если она не добавлена ​​в ваш mongod.conf =>

security:
  authorization: enabled

Затем перезапустите mongodb, и все готово.

0 голосов
/ 15 марта 2019

Хорошо, глядя на ваш монго-конф, мы видим, что в вашей базе данных есть место и путь к журналу, а именно "Program Files", которые могут создать проблему. Обходной путь это: 1) Создайте каталог данных, логов и конф. C:\data\db, C:\data\log and C:\data\mongod.conf. 2) Внесите изменения в mongod.conf для dbpath и logpath. 3) Добавьте security authorization: enabled в mongod.conf , как предложено. 4) Удалите службу mongod, если она уже установлена, и снова установите службу. 5) Перезапустите сервис. Надеюсь, это поможет.

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