MST
星途 面试题库

面试题:MongoDB权限管理之角色定制

假设你需要在MongoDB中创建一个自定义角色,该角色需要有对特定数据库集合的读、写以及删除文档的权限,但不能有创建集合的权限。请详细阐述创建此自定义角色以及将该角色赋予特定用户的步骤及相关命令。
46.7万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 创建自定义角色
    • 连接到MongoDB数据库,使用mongo命令进入MongoDB shell。
    • 切换到要创建角色的数据库,例如use yourDatabase
    • 使用db.createRole()命令创建角色,示例如下:
    db.createRole(
        {
            role: "yourCustomRole",
            privileges: [
                {
                    resource: { db: "yourDatabase", collection: "yourCollection" },
                    actions: [ "find", "insert", "update", "delete" ]
                }
            ],
            roles: []
        }
    )
    
    上述命令创建了一个名为yourCustomRole的角色,该角色对yourDatabase数据库中的yourCollection集合具有find(读)、insert(写)、update(写)和delete(删除文档)权限。roles: []表示该角色不继承其他角色的权限。
  2. 将角色赋予特定用户
    • 切换到admin数据库,因为管理用户相关操作通常在admin数据库进行,使用use admin
    • 使用db.grantRolesToUser()命令将角色赋予用户,示例如下:
    db.grantRolesToUser(
        "yourUsername",
        [
            { role: "yourCustomRole", db: "yourDatabase" }
        ]
    )
    
    上述命令将yourCustomRole角色赋予了yourUsername用户,该用户在yourDatabase数据库中具有yourCustomRole角色定义的权限。

注意:请将yourDatabaseyourCollectionyourCustomRoleyourUsername替换为实际的数据库名、集合名、角色名和用户名。