Eu precisava ter acesso externo ao meu banco de dados mongodb, então eu removi o bind_ip do arquivo mongod.conf, e liguei auth. Eu então adicionei um usuário root que pode acessar tudo, e tentei conectar ao banco de dados com robomongo - funciona perfeitamente. Então eu adicionei outro usuário para o meu aplicativo nodejs. Eu tentei com os papéis dbAdmin, readWrite, read .... e não importa o que eu configurei, ele nunca terminará de se conectar ao DB no nodejs.
O usuário é assim:
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"
}
]
}
Não consigo encontrar em nenhum lugar quais devem ser os papéis adequados.
UPDATE: Eu queria explicar melhor o que está acontecendo quando ele tenta se conectar. Ele autoriza o usuário muito bem, porque se eu mudar o nome de usuário / passar para algo errado, isso causará um erro de autenticação com falha. Eu também tentei adicionar um ouvinte de evento para quando a conexão está "conectada" e, em seguida, executar o restante do script ... e esse evento nunca é acionado. Apenas parece estar pendurado.
ATUALIZAÇÃO: Aqui está o código que estou tentando usar para conectar ao mongodb via mongoose:
mongoose.connect('mongodb://username:password@localhost:27017/database', { auth: { authdb: 'admin' } });
Tags mongodb