У меня есть приложение, которое подключается к базе данных 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/
Проблема решена удалением любых символов. Похоже, что, несмотря на кавычки [одинарные или двойные], входящий пароль будет недействительным.