Задать вопрос

Как работает авторизация в Mongo?

Здраствуйте.
На сервере имеется установленная монго версии 2.4.9.
По-умолчанию в конфиге строка auth=true закоментирована.
В монго созданы пользователи:
> use admin
switched to db admin
> show users
{
	"_id" : ObjectId("55631c4ced1bdfc880fda8e0"),
	"user" : "admin",
	"pwd" : "f306c561a12b1be8478e4cc3b460433a",
	"roles" : [
		"userAdminAnyDatabase",
		"dbAdminAnyDatabase",
		"readWriteAnyDatabase"
	]
}
{
	"_id" : ObjectId("5563371cb7537b3e14bdfb4b"),
	"user" : "rUser",
	"pwd" : "eee18df57c91293310dbf78649955a84",
	"roles" : [
		"readAnyDatabase"
	]
}

Когда в конфиге убираю решетку у строки "#auth=true" и остается "auth=true", то при вызове команды "mongo" вхожу в косоль монго, но базы данных само собой не вижу (на команду "show dbs" получаю ошибку "...listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" }...").
Но почему возникает эта ошибка:
> use admin
switched to db admin
> db.auth('admin', 'password')
1
> show dbs
Tue May 26 19:48:05.074 listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46
  • Вопрос задан
  • 8271 просмотр
Подписаться 3 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Skillbox
    Курс Java-разработчик
    4 месяца
    Далее
  • MongoDB University
    MongoDB Atlas Administrator Path
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
@lega
У меня работает:

Запустил сервер:
$ mongod --auth --dbpath /tmp/1 --smallfiles --port 27020

Добавляю пользователя:
$ mongo --port 27020
MongoDB shell version: 2.6.10
connecting to: 127.0.0.1:27020/test
> show dbs
admin  (empty)
local  0.031GB
> use admin
switched to db admin
> db.addUser({user:'name', pwd:'password', roles:["userAdminAnyDatabase","dbAdminAnyDatabase", "readWriteAnyDatabase"]})
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: {
        "user" : "name",
        "roles" : [
                "userAdminAnyDatabase",
                "dbAdminAnyDatabase",
                "readWriteAnyDatabase"
        ]
}
> exit
bye

Проверяю:
$ mongo --port 27020
MongoDB shell version: 2.6.10
connecting to: 127.0.0.1:27020/test
> show dbs
2015-05-27T16:35:46.071+0500 listDatabases failed:{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
        "code" : 13
} at src/mongo/shell/mongo.js:47
> use admin
switched to db admin
> db.auth('name', 'password')
1
> show dbs
admin  0.031GB
local  0.031GB

Т.е. при подключении нет прав до авторизации.

Как вариант, можете попробовать обновится на 2.6, там не много изменений.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы