Wow, tutaj jest tyle skomplikowanych / mylących odpowiedzi.
To jest od wersji 3.4 .
Krótka odpowiedź.
1) Uruchom MongoDB bez kontroli dostępu.
mongod --dbpath /data/db
2) Połącz się z instancją.
mongo
3) Utwórz użytkownika.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Zatrzymaj instancję MongoDB i uruchom ją ponownie z kontrolą dostępu.
mongod --auth --dbpath /data/db
5) Połącz się i uwierzytelnij jako użytkownik.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Długa odpowiedź: przeczytaj to, jeśli chcesz poprawnie zrozumieć.
To jest naprawdę proste. Omówię poniższe https://docs.mongodb.com/manual/tutorial/enable-authentication/
Jeśli chcesz dowiedzieć się więcej o tym, czym właściwie są role, przeczytaj więcej tutaj: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Uruchom MongoDB bez kontroli dostępu.
mongod --dbpath /data/db
2) Połącz się z instancją.
mongo
3) Utwórz administratora użytkownika. Poniżej utworzono administratora użytkownika w admin
bazie danych uwierzytelniania. Użytkownik jest dbOwner
ponad some_db
bazą danych, a NIE ponad admin
bazą danych, o czym należy pamiętać.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Lub jeśli chcesz utworzyć administratora, który jest administratorem w dowolnej bazie danych:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Zatrzymaj instancję MongoDB i uruchom ją ponownie z kontrolą dostępu.
mongod --auth --dbpath /data/db
5) Połącz się i uwierzytelnij jako administrator użytkownika względem admin
bazy danych uwierzytelniania, a NIE względem some_db
bazy danych uwierzytelniania. Administrator użytkownika został utworzony w admin
bazie danych uwierzytelniania, użytkownik nie istnieje w some_db
bazie danych uwierzytelniania.
use admin
db.auth("myDbOwner", "abc123")
Jesteś teraz uwierzytelnione jako dbOwner
nad some_db
bazą danych. Więc teraz, jeśli chcesz czytać / pisać / robić rzeczy bezpośrednio w some_db
bazie danych, możesz na nią przejść.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Więcej na temat ról: https://docs.mongodb.com/manual/reference/built-in-roles/
Jeśli chcesz utworzyć dodatkowych użytkowników, którzy nie są administratorami użytkowników i którzy są zwykłymi użytkownikami, czytaj dalej.
6) Utwórz normalnego użytkownika. Ten użytkownik zostanie utworzony w some_db
bazie danych uwierzytelniania poniżej.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Wyjdź z powłoki mongo, podłącz ponownie, uwierzytelnij się jako użytkownik.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})