版本是mongo 2.6。
我创建了一个用户角色" dbAdminAnyDatabase"。但是当copyDatabase仍然提供错误消息时。
mongos> db.createUser({user:"hant",pwd:"abc",roles:["readWriteAnyDatabase","dbAdminAnyDatabase"]});
Successfully added user: {
"user" : "hant",
"roles" : [
"readWriteAnyDatabase",
"dbAdminAnyDatabase"
]
}
mongos> use admin;
switched to db admin
mongos> db.auth("hant","abc");
1
mongos> db.copyDatabase("wlib007","wlib003");
{
"errmsg" : "exception: nextSafe(): { $err: \"not authorized for query on wlib007.system.namespaces\", code: 13 }",
"code" : 13106,
"ok" : 0
}
但是在检查wlib007.system.namespaces.find时,
mongos> db.system.namespaces.find();
{ "name" : "admin.system.version" }
{ "name" : "admin.system.indexes" }
{ "name" : "admin.system.version.$_id_" }
{ "name" : "admin.system.users" }
{ "name" : "admin.system.users.$_id_" }
{ "name" : "admin.system.users.$user_1_db_1" }
{ "name" : "admin.system.profile", "options" : { "capped" : true, "size" : 1048576 } }
为什么dbAdminAnyDatabase
角色不适用于copyDatabase
?
答案 0 :(得分:0)
以下是描述mongo角色的官方文档: https://docs.mongodb.org/manual/reference/built-in-roles/
遵守规则," dbAdmin"没有读/写权限。您可以通过mongodb的客户进行角色测试,例如Mongochef。
答案 1 :(得分:0)
如您所写:
mongos> db.auth("hant","abc");
db.copyDatabase("wlib007","wlib003");
{“ errmsg”:“例外:nextSafe():{$ err:\”未经授权查询 在wlib007.system.namespaces \“上,代码:13}”,“ code”:13106, “ ok”:0}
您想要的
使用wlib003
创建用户请求并授予那些 DB(“ wlib007”,“ wlib003”)身份验证;
如下。
这是一个简单的问题。
使用yourDB
通过
显示用户
如果您得到一个{}空对象,那就是问题。您只需要输入
db.createUser(
{
user: "yourUser",
pwd: "password",
roles: [ "readWrite", "dbAdmin" ]
} )
或
db.grantRolesToUser('yourUser',[{ role: "dbAdmin", db: "yourDB" }])