Как работает авторизация в 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
  • Вопрос задан
  • 7936 просмотров
Пригласить эксперта
Ответы на вопрос 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, там не много изменений.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы