今天在学习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/
评论前必须登录!
注册