【问题标题】:Mongodb Atlas: not authorized on admin to execute commandMongodb Atlas:管理员未授权执行命令
【发布时间】:2021-09-22 17:05:54
【问题描述】:

我有一个 MongoDB Atlas 集群,我试图在其中简单地复制同一实例中的数据库。不幸的是,每次我尝试运行 db.copyDatabase() 或 copydb admin 命令时,都会收到以下错误:

not authorized on admin to execute command

这很奇怪,因为我只有一个用户,并且它可以访问所有内容,至少据我在 atlas 上可以看出:

我在 stackoverflow 中进行了一些搜索,但看起来大多数答案都与本地运行的 mongod 实例有关,而不是在 atlas 中运行的实例...我是否设置了错误的用户?

【问题讨论】:

    标签: mongodb mongodb-atlas


    【解决方案1】:

    我最终向 MongoDB 大学讨论板提出了这个问题。万一有人遇到这种情况,这显然是因为我使用的是免费集群。

    【讨论】:

    【解决方案2】:

    当我尝试使用 Node.js 版本 3.0 或更高版本 并使用以下链接连接到集群时遇到了同样的问题:

    mongodb+srv://username:password@cluster0-eoowo.mongodb.net/test?retryWrites=true

    通过选择2.2.12或更高版本并使用提供的链接,一切顺利

    mongodb://username:password@cluster0-shard-00-00-eoowo.mongodb.net:27017,cluster0-shard-00-01-eoowo.mongodb.net:27017,cluster0-shard-00-02 -eoowo.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true

    【讨论】:

      【解决方案3】:

      这让我发疯了...原来 MongoDB 提供的标准链接试图将我的默认数据库命名为“admin”。从

      更改链接
      mongodb+srv://username:password@portfoliosite-ezeot.mongodb.net/**admin**?retryWrites=true&w=majority 
      

      到

      mongodb+srv://username:password@portfoliosite-ezeot.mongodb.net/**test**?retryWrites=true&w=majority
      

      您可以输入任何单词进行测试,但不能输入管理员。希望这会有所帮助!

      【讨论】:

      • 谢谢,也帮了我很多忙。
      • 非常感谢!这是我的确切问题!一旦我将我的 Node.js 驱动程序设置为 2.2.12 或更高版本,我就会在这个过程中走得更远,但它仍然只是拒绝并出现“错误:querySrv EREFUSED”错误。将“管理员”更改为其他任何内容都可以修复错误。
      【解决方案4】:

      只需使用此版本,然后复制其链接并从您的 mongodb 地图集中替换具有读写权限的用户名和密码,它会连接我也遇到同样的问题花了很多时间来解决这个问题我尝试了 2.2.12 版本,它工作了。

      【讨论】:

        【解决方案5】:

        此错误的另一个原因是作为启动错误操作的用户以外的用户登录——要使用db.killOp,您需要以启动操作的用户身份登录 mongo shell。

        在 Atlas 上,数据库用户可以利用db.killOp() 命令来终止他们自己的 操作。您是正确的,具有 atlasAdmin 权限的帐户无法终止集群上不是由该帐户启动的操作。

        如果您在 mongo shell 中使用应用程序用来启动违规操作的用户进行身份验证,那么您应该能够使用 db.killOp() 来终止所述操作。

        (来源是 atlas 支持票)

        【讨论】:

          【解决方案6】:

          我遇到过类似的障碍并花了几个小时,问题在于 mongodb atlas 提供的连接字符串是:mongodb+srv://username:password@clusterName-jynkd.mongodb.net/test?retryWrites=true

          我使用了不同的连接字符串并且工作得很好。就是这个: mongodb://username:password@clusterName+port/yourdb?retryWrites=true&ssl=true&authSource=admin。 确保 clustername + port 是这样的: clusterName-shard-00-00-jynkd.mongodb.net:27017

          【讨论】:

            【解决方案7】:

            此错误是因为您尝试在管理员上方创建集合,在 atlas 中这是不可能的,因为安全性。

            在这种情况下,您需要使用单词 key use [collection_name]

            这是此答案的链接。

            它是西班牙语。

            https://victorroblesweb.es/2016/12/24/crear-una-base-datos-mongodb/

            【讨论】:

              【解决方案8】:

              如果您一直在使用 mongoose,我解决了将 mongoose 更新到最新版本的类似错误(基于此 post)。

              【讨论】:

                【解决方案9】:

                在我的情况下,我在尝试连接到 mongodb atlas 时遇到了这个问题。我通过从 mongdb uri string 中删除这些来消除错误。 ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true

                原文链接:mongodb+srv://username:password@hostname/dbname?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true

                整改后:mongodb+srv://username:password@hostname/dbname

                【讨论】:

                  【解决方案10】:

                  这个答案不是 100% 特定于 OG 问题,但是,这是我在谷歌搜索我的错误消息“mongodb atlas errmsg: '(unauthorized) not authorized on admin to execute command”时一直看到的主要帖子“

                  如果您在 2021 年遇到此错误并使用 Mongoose V4 或更低版本连接 MongoDB Atlas,请尝试将 Mongoose 更新到最新版本(发布此答案时为 V5.12.13)。

                  打开你的终端,导航到你的项目目录,然后运行

                  npm i mongoose@latest    
                  

                  我一直在使用 2018 年年中开设的关于 Node.js 和 Express 的在线课程的入门代码。起始代码一直在使用 Mongoose V4,这个解决方案对我有用。我的 MongoDB Atlas 集群是 M0 免费层。

                  【讨论】:

                    【解决方案11】:

                    我已更改节点版本 2.2.12 或更高版本

                    【讨论】:

                    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。
                    猜你喜欢
                    • 1970-01-01
                    • 2018-04-06
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-07-25
                    • 1970-01-01
                    • 2020-02-02
                    • 2019-05-30
                    • 2015-10-30
                    相关资源
                    最近更新 更多