我有一个MongoDB实例,包含大约30个数据库,每个数据库都有一个“client_data”集合。我想授予我的客户机在所有数据库中对此集合的读取权限,而不是其他集合。我想写一个这样的脚本:

mongoclient = pymongo.MongoClient("mongodb://admin:password@host/port")
rolenames = []
for dbname in mongoclient.get_databases():
   db = mongoclient[dbname]
   rolename = dbname + "role"
   rolenames.append[rolename]
   db.create_role(rolename, [ {resource: {db: dbname, collection: client_data}, actions: ["find"] } ])

然后
db.create_user("client", password, roles=rolenames)

我知道create_user()函数允许您作为参数传入预定义的角色,但是在pymongo中是否也有定义新角色的方法?

最佳答案

是的,你可以!看看我的例子:

db.command("createRole",
    "manageCurrentOpRole",
    privileges=[{"resource" : {"cluster" : True}, "actions" : ["inprog"]}],
    roles=[])

关于mongodb - 是否可以使用pymongo创建用户定义的角色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38063941/

10-09 19:08