Iva*_*gin 8 mongoose mongodb node.js
我正在为node.js使用mongoDB 2.6.7和mongoose 3.8.23驱动程序.数据库分为2个分片(每个分片是独立的副本),当我在任何实例,副本,mongos,配置服务器等上输入mongo shell时,一切看起来都不错.
之后,我为我正在连接的特定数据库添加了admin用户和用户(名为normaluser).我在mongos实例上添加了它们.用户是:
[
{
"_id" : "admin.adminuser",
"user" : "adminuser",
"db" : "admin",
"roles" : [
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
},
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "clusterAdmin",
"db" : "admin"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
和
[
{
"_id" : "mydb.normaluser",
"user" : "normaluser",
"db" : "mydb",
"roles" : [
{
"role" : "readWrite",
"db" : "mydb"
}
]
}
Run Code Online (Sandbox Code Playgroud)
]
从我的node.js应用程序我连接到mongos实例(我有2个mongos实例),如下所示:
mongoose.createConnection('mongodb://mongos-ip-1:27018,mongos-ip-2:27018/mydb', {user : 'normaluser', password : 'some-password', mongos : true, server : {poolSize : 5, keepAlive : true}}
Run Code Online (Sandbox Code Playgroud)
我已成功连接到数据库但是当我尝试从应用程序查询mydb.some-collection时出现此错误:
Possibly unhandled MongoError: not authorized for query on mydb.some-collection
Run Code Online (Sandbox Code Playgroud)
当我在某些mongos实例上访问mongo shell并以normaluser身份登录时,我可以查询任何内容并且没问题.
有没有人知道为什么我不能进行任何查询虽然我有用户的readWrite角色并在mongoose的连接url中指定用户?也许我错过了猫鼬的东西?
我甚至试图将dbOwner角色放到normaluser上但没有改变
谢谢,伊万
小智 2
伊万,试试这个语法:
mongoose.createConnection('mongodb://user:pass@localhost:port/db, ...', opts);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1314 次 |
最近记录: |