我需要对我的 mongodb 数据库进行外部访问,因此我从 mongod.conf 文件中删除了 bind_ip,并启用了身份验证。然后,我添加了一个可以访问所有内容的 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"
}
]
}
我似乎无法在任何地方找到适当的角色应该是什么。
更新:我想更好地解释尝试连接时发生了什么。它可以很好地验证用户身份,因为如果我将用户名/密码更改为错误的密码,它会给出失败验证错误。我还尝试添加一个事件侦听器,用于连接“连接”时的情况,然后运行脚本的其余部分……但该事件从未触发。它似乎挂了。
更新:下面是我尝试使用通过 mongoose 连接到 mongodb 的代码:
mongoose.connect('mongodb://username:password@localhost:27017/database', { auth: { authdb: 'admin' } });