MongoDB: serwer ma ostrzeżenia dotyczące uruchamiania '' Kontrola dostępu nie jest włączona dla bazy danych ''

89

Dzisiaj po raz pierwszy zainstalowałem MongoDB 3.4.1. Ale kiedy go uruchomiłem i użyłem powłoki MongoDB, dało mi to następujące ostrzeżenia:

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]

mój komputer to Microsoft Windows [ version 10.0.14393].

alewu
źródło
2
Możliwy duplikat MongoDB: serwer ma ostrzeżenia o uruchomieniu
Joseph Ferris
6
To prawie idealna kopia innego pytania. Czy zdarzyło Ci się już zadać to pytanie w zeszłym roku pod inną nazwą użytkownika? Jedyną różnicą jest nazwa użytkownika i wersja systemu Windows. Zobacz: stackoverflow.com/questions/36660117/…
Joseph Ferris
@JosephFerris, tak, to jest duplikacja dla stackoverflow.com/questions/36660117/ ... i to pytanie zostało zamknięte z powodu tej duplikacji.
Lakmal Vithanage

Odpowiedzi:

137

Mongodb v3.4

Aby utworzyć bezpieczną bazę danych, musisz wykonać następujące czynności:

Upewnij się, że użytkownik uruchamiający proces ma uprawnienia i że katalogi istnieją ( /data/dbw tym przypadku).

1) Uruchom MongoDB bez kontroli dostępu.

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

2) Połącz się z instancją.

mongo --port 27017

3) Utwórz administratora użytkownika (w bazie danych uwierzytelniania administratora) .

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

4) Uruchom ponownie instancję MongoDB z kontrolą dostępu.

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

5) Połącz się i uwierzytelnij jako administrator użytkownika.

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

6) Utwórz dodatkowych użytkowników według potrzeb do wdrożenia (np. W testowej bazie danych uwierzytelniania) .

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

7) Połącz się i uwierzytelnij jako myTester.

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

W zasadzie właśnie wyjaśniłem krótką wersję oficjalnej dokumentacji tutaj: https://docs.mongodb.com/master/tutorial/enable-authentication/

basickarl
źródło
1
Podoba mi się, że powiedziałeś, ale tylko jeden problem polega na tym, że to --auth musi przejść za każdym razem lub tylko raz. jeśli za każdym razem, jak dawać z usługą, ponieważ na serwerze chcę polubić tę usługę sudo MongoDB start?
suresh pareek
5
@sureshpareek Możesz to skonfigurować w pliku mongodb.conf, jeśli nie chcesz go przekazywać za każdym razem, więcej informacji tutaj: docs.mongodb.com/manual/reference/configuration-options/…
basickarl
1
@sureshpareek No problem man! Sprawdź tutaj, jeśli chcesz dowiedzieć się więcej na ten temat: stackoverflow.com/a/42929869/1137669 Wyjaśnię trochę bardziej szczegółowo.
basickarl
Nie udało mi się w pierwszym kroku. Byłem w wersji v3.6.5. To samo ostrzeżenie i wyłączenie
wyx
7
Poważnie chłopaki ... Dlaczego nie powiedzieć, aby umożliwić security.authorizationin mongod.conf??????
John
-5

Musisz usunąć stary folder db i odtworzyć nowy. To rozwiąże Twój problem.

Parag
źródło