Ух ты так много сложных / запутанных ответов здесь.
Это по состоянию на 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({})