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?
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:
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 poniższej procedury lub zapoznać się z tematem Włączanie uwierzytelniania w dokumentacji MongoDB.
Uruchom MongoDB bez kontroli dostępu.
mongod --port 27017 --dbpath /data/db1
Połącz się z instancją.
mongo --port 27017
Utwórz administratora użytkownika.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Uruchom ponownie instancję MongoDB z kontrolą dostępu.
mongod --auth --port 27017 --dbpath /data/db1
Uwierzytelnij się jako administrator użytkowników.
mongo --port 27017 -u "myUserAdmin" -p "abc123" \
--authenticationDatabase "admin"
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" } ]
}
)
W przypadku MongoDB wcześniejszych niż 2.6 polecenie dodania użytkownika root to addUser
(np.)
db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
db.addUser
. Począwszy od 2.6 iw aktualnej wersji 3.4.x możesz stworzyć użytkownika z db.CreateUser
.
db.createUser
;) ( docs.mongodb.com/manual/reference/method/db.createUser )
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 ( --auth
przełą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.