Ось так багато складних / заплутаних відповідей тут.
Це станом на v3.4 .
Коротка відповідь.
1) Запустіть MongoDB без контролю доступу.
mongod --dbpath /data/db
2) Підключіться до екземпляра.
mongo
3) Створіть користувача.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Зупиніть екземпляр MongoDB і запустіть його знову за допомогою контролю доступу.
mongod --auth --dbpath /data/db
5) Підключіться та автентифікуйтесь як користувач.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Довга відповідь: прочитайте це, якщо хочете правильно зрозуміти.
Це дійсно просто. Я буду глумити наступне нижче https://docs.mongodb.com/manual/tutorial/enable-authentication/
Якщо ви хочете дізнатися більше про те, що ролі насправді виконують, читайте більше тут: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Запустіть MongoDB без контролю доступу.
mongod --dbpath /data/db
2) Підключіться до екземпляра.
mongo
3) Створіть адміністратора користувача. Далі створюється адміністратор користувача в adminбазі даних аутентифікації. Користувач є dbOwnerнад some_dbбазою даних, а НЕ над adminбазою даних, це важливо пам'ятати.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Або якщо ви хочете створити адміністратора, який є адміністратором над будь-якою базою даних:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Зупиніть екземпляр MongoDB і запустіть його знову за допомогою контролю доступу.
mongod --auth --dbpath /data/db
5) Підключіть і автентифікуйтесь як адміністратор користувача до admin базу даних автентифікації, а не some_dbБД. Адміністратор користувача створений в adminбазі даних аутентифікації, користувач не існує в some_dbбазі даних аутентифікації.
use admin
db.auth("myDbOwner", "abc123")
Тепер ви перевірка справжності як dbOwnerпо some_dbбазі даних. Отже, якщо ви хочете читати / писати / робити речі безпосередньо до some_dbбази даних, ви можете змінити її.
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.
Детальніше про ролі: https://docs.mongodb.com/manual/reference/built-in-roles/
Якщо ви хочете зробити додаткових користувачів, які не є адміністраторами користувачів і які є звичайними користувачами, продовжуйте читати нижче.
6) Створіть нормального користувача. Цей користувач буде створений в some_dbбазі даних аутентифікації внизу.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Вийдіть з оболонки mongo, повторно підключіться, автентифікуйтесь як користувач.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})