Ось так багато складних / заплутаних відповідей тут.
Це станом на 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({})