开发者社区 问答 正文

实例创建时指定的 root 账号拥有什么权限?

root 账号在 admin 数据库下创建,拥有 Mongodb 内置的「root」权限;使用 root 账号登录数据库后,用户可以根据需要创建更多账号。可通过 mongo shell 的 show users 查看当前用户信息。

展开
收起
云栖大讲堂 2017-10-30 17:50:17 1773 分享 版权
阿里云 AI 助理回答

您提到的是MongoDB数据库中关于用户权限管理的内容。在MongoDB中,确实可以创建具有特定权限的用户来管理不同的数据库访问控制。不过,直接提及使用"root"账号可能与MongoDB的最佳实践有所偏差。在MongoDB中,更推荐的做法是使用角色-based的权限控制体系,而不是直接使用一个类似"root"的超级用户直接进行日常操作。

MongoDB用户与权限管理

  1. 内置角色:MongoDB有一系列预定义的角色,如readWritedbAdminuserAdmin等,这些角色可以分配给数据库用户,以赋予他们相应的权限。例如,dbAdmin角色允许用户在指定数据库上执行管理操作,但不包括对用户和角色管理的权限;而userAdmin角色则允许在特定数据库上管理用户和角色,但不包括其他数据库管理操作。

  2. 超级用户角色:虽然MongoDB没有直接命名的"root"用户概念,但存在类似超级管理员的角色,如root(在admin数据库中)和__system,这两个角色拥有几乎所有的权限,类似于传统意义上的"root"权限。通常,建议仅在部署初期或进行特殊维护时使用,并且要严格控制这类用户的使用和访问。

  3. 创建用户:通过mongo shell或者使用MongoDB的管理工具,可以创建具有特定角色的用户。例如,创建一个具有读写权限的用户,可以使用如下命令:

    use admin
    db.createUser(
     {
       user: "myUser",
       pwd: "password123",
       roles: [ { role: "readWrite", db: "myDatabase" } ]
     }
    )
    
  4. 查看用户信息:如您所述,可以通过show users命令在当前数据库中查看用户列表。如果想要在特定数据库(比如admin数据库)查看用户,需要先切换到该数据库:

    use admin
    show users
    
  5. 安全建议:出于安全考虑,建议尽量避免直接使用具有广泛权限的账户进行日常操作。而是应该根据实际需求,为不同操作和人员分配最小必要权限的角色,遵循最小权限原则。

请确保在配置MongoDB实例时,也启用了访问控制(security.authorization),这将强制所有客户端连接都必须通过验证,进一步增强安全性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答