个人博客
专注IT梦想的地方

MongoDB数据库中出现couldn’t add user: “otherDBRoles” is not a valid argument to createUser的解决办法

今天在学习mongodb数据的3.2版本的时候,发现和书本中的版本已经出现了很大的变化,我在创建管理员账户的时候就出现了couldn’t add user: “otherDBRoles” is not a valid argument to createUser的错误,谷歌后发现是新版本中有出现语句的机构性变化,同时查询数据库中显示的结构性变化也是存在的,以前是用的下面这句:

db.createUser({user:'test', pwd:'123', roles:['userAdminAnyDatabase'], otherDBRoles:{mytestdb:['readWriteAnyDatabase', 'dbAdminAnyDatabase', 'clusterAdmin']}})

而如果直接执行就会出现couldn’t add user: “otherDBRoles” is not a valid argument to createUser这样的错误,而3.2版本中的正确执行语句是下面的:

use mytestdb;
db.createUser({user:'test', pwd:'123', roles:[{ role: "userAdminAnyDatabase", db: "admin"}]});

而前提当然都是要取得auth的权限从可以的。

最后查询了以下官方的问题,发现是这样的解释:

创建数据库管理员角色
db.createUser(
   {
     user: "accountUser",
     pwd: "password",
     roles: [ "readWrite", "dbAdmin" ]
   }
)

创建用户管理角色
db.createUser(
   {
     user: "appAdmin",
     pwd: "password",
     roles:
       [
         { role: "readWrite", db: "config" },
         "clusterAdmin"
       ]
   }
)

但是在之后看到了一段代码比较详细的代码,如下:

use test
db.createUser( { "user" : "accountAdmin01",
                 "pwd": "cleartext password",
                 "customData" : { employeeId: 12345 },
                 "roles" : [ { role: "clusterAdmin", db: "admin" },
                             { role: "readAnyDatabase", db: "admin" },
                             "readWrite"
                             ] },
               { w: "majority" , wtimeout: 5000 } )

大致的意思就是在数据test中创建一个名为accountAdmin01的用户,这个test数据库对于accountAdmin01用户的权限为readWrite权限,而同时在admin数据库中的权限为clusterAdmin和readAnyDatabase,我个人的理解是这样的,因为阅读英文水平的文档还是存在诸多问题的,所以如果有这行的专家,希望指点一二。

参考资料:

https://docs.mongodb.org/manual/reference/method/db.createUser/#db.createUser

http://ibruce.info/2015/03/03/mongodb3-auth/

 

赞(159) 打赏
未经允许,不得转载本站任何文章:智言个人博客 » MongoDB数据库中出现couldn’t add user: “otherDBRoles” is not a valid argument to createUser的解决办法

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏