Назад | Перейти на главную страницу

MongoDB Auth, может быть аутентифицирован в оболочке, но не через командную строку

У меня есть приложение, которое подключается к базе данных MongoDB, которое называется обсуждениями. Я создал пользователя

Оболочка Mongo:

> use discussions
switched to db discussions
> db.auth("discussions","XXXXXXXXX")
1
> show users
{
        "_id" : "discussions.discussions",
        "user" : "discussions",
        "db" : "discussions",
        "roles" : [
                {
                        "role" : "dbOwner",
                        "db" : "discussions"
                }
        ]
}

Итак, это подтверждает, что у меня есть одна учетная запись в базе данных, и это dbOwner. Согласно документации, у него есть привилегии READ, WRITE и т. Д.

В файле конфигурации включено свойство auth = true, и после внесения изменений служба была отклонена более одного раза.

Однако проблема в том, что когда я пытаюсь подключиться к базе данных извне оболочки, я всегда получаю сообщение об ошибке:

mongo  discussions -u 'discussions' -p 'XXXXXXXXX'
MongoDB shell version: 2.6.3
connecting to: discussion
2014-08-05T01:00:39.026+0400 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed

Я видел вопросы по этому поводу в Stackoverflow, и все они имели какое-то отношение к кавычкам, используемым вокруг имени пользователя и пароля ... но изменение одинарной кавычки на двойную кавычку не дало лучшего результата.

Может я ошибаюсь, но правильная форма такая:

mongo --port 27017 -u manager -p 12345678 --authenticationDatabase admin

Вы можете прочитать об этом в документации mongo:

http://docs.mongodb.org/manual/tutorial/add-user-to-database/

Проблема решена удалением любых символов. Похоже, что, несмотря на кавычки [одинарные или двойные], входящий пароль будет недействительным.