Ух ты так много сложных / запутанных ответов здесь.
Это по состоянию на 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) Выйдите из оболочки Монго, заново подключитесь, авторизуйтесь как пользователь.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})