MongoDB: на сервере появляются предупреждения о запуске `` Контроль доступа для базы данных не включен ''


89

Я впервые установил MongoDB 3.4.1 сегодня. Но когда я запускаю его и использую оболочку MongoDB, он выдал мне следующие предупреждения:

C:\Users\hs>"C:\Program Files\MongoDB\Server\3.4\bin\mongo.exe
MongoDB shell version v3.4.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.1
Server has startup warnings:
2017-01-12T21:19:46.941+0800 I CONTROL  [initandlisten]
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten]

мой компьютер - Microsoft Windows [ version 10.0.14393].



6
Это почти точная копия другого вопроса. Вы уже спрашивали об этом в прошлом году под другим именем пользователя? Единственное, что отличается, - это имя пользователя и версия Windows. См .: stackoverflow.com/questions/36660117/…
Джозеф Феррис

@JosephFerris, да, это дублирование для stackoverflow.com/questions/36660117/…, и этот вопрос закрыт из-за этого дублирования.
Lakmal Vithanage

Ответы:


137

Mongodb v3.4

Для создания защищенной базы данных вам необходимо сделать следующее:

Убедитесь, что у пользователя, запускающего процесс, есть разрешения и что каталоги существуют ( /data/dbв данном случае).

1) Запустите MongoDB без контроля доступа.

mongod --port 27017 --dbpath /data/db

2) Подключитесь к экземпляру.

mongo --port 27017

3) Создайте пользователя-администратора (в базе данных аутентификации админа) .

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

4) Перезапустите экземпляр MongoDB с контролем доступа.

mongod --auth --port 27017 --dbpath /data/db

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

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

6) Создайте дополнительных пользователей по мере необходимости для вашего развертывания (например, в тестовой базе данных аутентификации) .

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

7) Подключитесь и авторизуйтесь как myTester.

mongo --port 27017 -u "myTester" -p "xyz123" --authenticationDatabase "test"

Я просто объяснил здесь краткую версию официальных документов: https://docs.mongodb.com/master/tutorial/enable-authentication/


1
Я действительно так, как вы сказали, но только одна проблема заключается в том, что это --auth должно проходить каждый раз или один раз. если каждый раз, то как предоставить услугу, потому что на сервере я хочу, чтобы эта служба sudo запускалась в MongoDB?
suresh pareek

5
@sureshpareek Вы можете настроить это в файле mongodb.conf, если не хотите передавать его каждый раз, подробнее здесь: docs.mongodb.com/manual/reference/configuration-options/…
basickarl

1
@sureshpareek Нет проблем, чувак! Отметьте здесь, если хотите узнать больше об этом: stackoverflow.com/a/42929869/1137669 Я объясню немного подробнее.
basickarl

У меня не получилось сделать первый шаг. У меня была версия v3.6.5. То же самое предупреждение и выключение
wyx,

7
Серьезно , ребята ... Почему вы не говорите , чтобы включить security.authorizationв систему mongod.conf??????
Джон

-5

Вам нужно удалить старую папку db и воссоздать новую. Это решит вашу проблему.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.