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/…, і це питання закрито через це дублювання.
Лакмал Вітанаге

Відповіді:


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
Мені подобається, як ви сказали, але одна проблема полягає в тому, що ця - правда повинна проходити щоразу або протягом одного разу. якщо щоразу тоді як давати із сервісом, тому що на сервері мені хочеться сподобатися цей сервіс sudo MongoDB start?
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.