20

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

not authorized on admin to execute command

这很奇怪,因为我只有一个用户,它可以访问所有内容,至少据我在地图集上所知:

在此处输入图像描述

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

4

11 回答 11

24

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

于 2018-03-05T16:00:09.133 回答
22

当我尝试使用 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

于 2019-04-01T12:07:09.280 回答
7

这让我发疯了......原来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

您可以输入任何单词进行测试,而不是管理员。希望这可以帮助!

于 2019-10-04T17:43:19.057 回答
6

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

在此处输入图像描述

于 2019-07-24T11:39:00.420 回答
3

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

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

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

(来源是 atlas 支持票)

于 2020-04-14T01:50:52.320 回答
2

我遇到了类似的障碍并花了几个小时,问题出在 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-shard-00-00-jynkd.mongodb.net:27017

于 2019-04-27T17:54:02.307 回答
0

在我的情况下,我在尝试连接到 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

于 2021-01-26T15:34:09.837 回答
0

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

于 2019-06-01T04:38:54.567 回答
0

这个答案不是 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 免费层。

于 2021-06-12T21:53:35.500 回答
0

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

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

这是此答案的链接。

它是西班牙语的。

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

于 2018-11-18T03:01:42.073 回答
-1

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

于 2021-09-22T09:05:54.280 回答