解决 MongoDB 遇到的 “not authorized on admin to execute command” 错误

阅读时长 4 分钟读完

引言

在使用 MongoDB 进行开发时,有时候会遇到 “not authorized on admin to execute command” 错误,这个错误表示当前的用户没有权限执行该命令。本文将介绍如何解决这个问题。

问题分析

在 MongoDB 中,用户需要有特定的角色才能执行指定的操作,常见的角色包括:read、readWrite、dbAdmin、dbOwner、userAdmin、clusterAdmin 等。

当用户没有授予执行命令所需的角色时,就会出现 “not authorized on admin to execute command” 错误。

例如,当一个没有授予管理员权限的用户修改数据库时,就会出现这个错误。

解决方案

为了解决这个问题,我们可以通过以下步骤进行:

步骤一:检查数据库权限

首先,需要检查当前用户是否拥有执行该命令所需的权限,可以通过以下命令进行检查:

该命令将显示当前数据库的所有用户及其权限信息。

如果当前用户没有执行该命令所需的权限,可以通过以下命令为用户授予相应的角色:

其中,第一个参数是用户名,第二个参数是用户要授予的角色,可以根据需要进行调整。

步骤二:切换到相应的数据库

在 MongoDB 中,每个数据库都有独立的用户和权限控制。因此,需要切换到相应的数据库,并以该数据库的管理员身份执行命令。

例如,如果需要在 test 数据库中执行命令,可以通过以下命令进行切换:

步骤三:重新认证

有时候在进行权限修改后,需要重新认证才能生效。可以通过以下命令进行重新认证:

其中, username 和 password 分别是你的用户名和密码。

示例代码

以下是一个示例,展示了如何在 Node.js 中通过 mongoose 库连接 MongoDB 数据库,并授予用户相应的权限:

-- -------------------- ---- -------
----- -------- - --------------------

-------------------------------------------- - ---------------- ---- ---

----- -- - --------------------

-------------- --------------------------- ----------- ----------
--------------- -------- -- -
  ---------------------- -- -----------

  -- ----
  --------------- ----------- ------- ---- ----------- ------ ------------- -- -------- ----- ---- -
    -- ----- ----- ----

    ----------------- -----------

    -- --- ---- ---
    ----- - --------------

    -- ----
    -------------------------- ----------- -------- ----- ---- -
      -- ----- ----- ----

      ----------------- -----------------

      -- -------
      --------------- ------------- - -- -------- ----- ---- -
        -- ----- ----- ----

        --------------------- -----------
      ---
    ---
  ---
---

结论

通过本文的介绍和示例代码,我们可以轻松地解决 MongoDB 遇到的 “not authorized on admin to execute command” 错误,并为类似的问题提供了有效的解决方案。同时,我们也应该引以为戒,遵守 MongoDB 的权限管理规范,保护好数据的安全。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6711bc71ad1e889fe2008091

纠错
反馈