Мне нужен был внешний доступ к моей базе данных mongodb, поэтому я удалил bind_ip из файла mongod.conf и включил аутентификацию. Затем я добавил пользователя root, который может получить доступ ко всему, и попытался подключиться к базе данных с помощью robomongo - работает отлично. Затем я добавил еще одного пользователя в свое приложение nodejs. Я пробовал с ролями dbAdmin, readWrite, read .... и независимо от того, что я установил, он никогда не завершит подключение к БД в nodejs.
Пользователь выглядит так:
db.getUser('node');
{
"_id" : "admin.node",
"user" : "node",
"db" : "admin",
"roles" : [
{
"role" : "read",
"db" : "mydb"
},
{
"role" : "userAdmin",
"db" : "mydb"
},
{
"role" : "dbAdmin",
"db" : "mydb"
},
{
"role" : "readWrite",
"db" : "mydb"
},
{
"role" : "userAdminAnyDatabase",
"db" : "mydb"
}
]
}
Кажется, я нигде не могу найти подходящие роли.
ОБНОВЛЕНИЕ: я хотел лучше объяснить, что происходит, когда он пытается подключиться. Он прекрасно авторизует пользователя, потому что, если я изменю имя пользователя / передаю что-то не так, это дает ошибку аутентификации. Я также попытался добавить прослушиватель событий, когда соединение «подключено», а затем запустить остальную часть скрипта ... и это событие никогда не запускается. Просто вроде зависает.
ОБНОВЛЕНИЕ: вот код, который я пытаюсь использовать для подключения к mongodb через mongoose:
mongoose.connect('mongodb://username:password@localhost:27017/database', { auth: { authdb: 'admin' } });