2016-08-12 15 views

Odpowiedz

65

Domyślnie mongodb nie ma włączonej kontroli dostępu, więc nie ma domyślnego użytkownika ani hasła.

Aby włączyć kontrolę dostępu, użyj opcji wiersza poleceń --auth lub ustawienia pliku konfiguracyjnego security.authorization.

Możesz skorzystać z następującej procedury lub zapoznać się z Enabling Auth w dokumentacji MongoDB.

Procedura

  1. start MongoDB bez kontroli dostępu.

    mongod --port 27017 --dbpath /data/db1 
    
  2. Nawiązanie połączenia z instancją.

    mongo --port 27017 
    
  3. Utwórz administratora użytkownika.

    use admin 
    db.createUser(
        { 
        user: "myUserAdmin", 
        pwd: "abc123", 
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
        } 
    ) 
    
  4. Ponownie uruchom instancję MongoDB z kontrolą dostępu.

    mongod --auth --port 27017 --dbpath /data/db1 
    
  5. Uwierzytelnianie jako administrator użytkownika.

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \ 
        --authenticationDatabase "admin" 
    
+4

Jeśli użytkownik zostanie utworzony z rolą userAdminAnyDatabase, nie będzie można utworzyć żadnej bazy danych. Dlatego sekcja ról powinna wyglądać następująco: role: [{rola: "root", db: "admin"}] – georgeos

+2

Proszę połączyć [oryginalny post z podręcznika MongoDB] (https://docs.mongodb.com/manual/tutorial/enable -authentication /) –

1

Dla MongoDB wcześniej niż 2.6, komenda dodać użytkownika root jest addUser (np)

db.addUser({user:'admin',pwd:'<password>',roles:["root"]}) 
+0

TypeError: db.addUser nie jest funkcją nie działa –

+0

Do wersji 2.6 miałeś 'db.addUser'. Począwszy od wersji 2.6 iw obecnej wersji 3.4.x możesz utworzyć użytkownika z 'db.CreateUser'. –

2

Ponadto z co @Camilo Silva już wspomniano, jeśli chcesz dać darmowy dostęp do tworzenia baz danych, odczytywanie, pisanie baz danych itp., ale nie chcesz tworzyć roli głównej, możesz zmienić trzeci etap, wykonując następujące czynności:

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