MongoDB jaki jest domyślny użytkownik i hasło?


109

Używam tych samych parametrów połączenia w środowisku lokalnym i produkcyjnym. Gdy ciąg połączenia tomongodb://localhost/mydb

Jaka jest nazwa użytkownika i hasło? Czy utrzymywanie tego w ten sposób jest bezpieczne?

Odpowiedzi:


218

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ń --authlub ustawienia pliku konfiguracyjnego security.authorization.

Możesz skorzystać z poniższej procedury lub zapoznać się z tematem Włączanie uwierzytelniania w dokumentacji MongoDB.

Procedura

  1. Uruchom MongoDB bez kontroli dostępu.

    mongod --port 27017 --dbpath /data/db1
    
  2. Połącz się 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. Uruchom ponownie instancję MongoDB z kontrolą dostępu.

    mongod --auth --port 27017 --dbpath /data/db1
    
  5. Uwierzytelnij się jako administrator użytkowników.

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

19
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: [{role: "root", db: "admin"}]
georgeos Kwietnia


1
jeśli chcesz znaleźć ścieżkę dbpath, użyj: grep dbPath /etc/mongod.conf
rckd

14

Oprócz tego, o czym już wspomniał @Camilo Silva, jeśli chcesz dać bezpłatny dostęp do tworzenia baz danych, odczytu, zapisu itp., Ale nie chcesz tworzyć roli roota, możesz zmienić trzeci krok w następujący sposób:

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


2

Oprócz wcześniej udzielonych odpowiedzi, jedną z opcji jest zastosowanie podejścia „wyjątku hosta lokalnego” w celu utworzenia pierwszego użytkownika, jeśli baza danych jest już uruchomiona z kontrolą dostępu ( --authprzełącznikiem). Aby to zrobić, musisz mieć dostęp localhost do serwera, a następnie uruchomić:

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

Jak podano w dokumentacji MongoDB:

Wyjątek localhost umożliwia włączenie kontroli dostępu, a następnie utworzenie pierwszego użytkownika w systemie. Z wyjątkiem localhost, po włączeniu kontroli dostępu połącz się z interfejsem localhost i utwórz pierwszego użytkownika w bazie danych administratora. Pierwszy użytkownik musi mieć uprawnienia do tworzenia innych użytkowników, na przykład użytkownika z rolą userAdmin lub userAdminAnyDatabase. Połączenia korzystające z wyjątku localhost mają dostęp tylko do tworzenia pierwszego użytkownika w bazie danych administratora.

Oto link do tej sekcji dokumentów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.