Mongodb Atlas:管理员未授权执行命令

Mongodb Atlas:管理员未授权执行命令,mongodb,mongodb-atlas,Mongodb,Mongodb Atlas,我有一个MongoDB Atlas集群,在该集群中,我试图简单地复制同一实例中的数据库。不幸的是,每次尝试运行db.copyDatabase或copydb admin命令时,都会出现以下错误: not authorized on admin to execute command 这很奇怪,因为我只有一个用户,而且它可以访问所有内容,至少就我在atlas上所知: 我在stackoverflow中进行了一些搜索,但看起来大多数答案都与本地运行的mongod实例有关,而不是atlas中运行的mong

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

not authorized on admin to execute command
这很奇怪,因为我只有一个用户,而且它可以访问所有内容,至少就我在atlas上所知:


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

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

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

在这种情况下,您需要使用关键字use[collection\u name]

这是这个答案的链接

它是西班牙语的


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

蒙哥达+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&replicset=cluster0-shard-0&authSource=admin&retryWrites=true


我曾经遇到过类似的障碍,花了几个小时,问题在于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+端口如下所示:
clusterName-shard-00-00-jynkd.mongodb.net:27017如果您一直在使用mongoose,在此基础上,我解决了将mongoose更新为最新版本的类似错误。

只需使用此版本,然后复制其链接并替换mongodb atlas中的用户名和密码,该atlas具有读写权限,并将连接起来。我也遇到了同样的问题。我花了很多时间来解决此问题,然后尝试2.2.12版本而且很有效


这让我发疯。。。原来MongoDB提供的标准链接试图命名我的默认数据库管理员。将链接从

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


你可以输入任何单词进行测试,但不能输入admin。希望这有帮助

导致此错误的另一个原因是以不同于启动坏操作的用户的身份登录-要使用db.killOp,您需要以启动操作的同一用户的身份登录mongo shell

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

如果您在mongo shell中向用户验证应用程序用于启动违规操作,那么您应该能够使用db.killOp终止所述操作


来源是atlas支持票证

在我的例子中,我在尝试连接mongodb atlas时遇到了这个问题。我通过从mongodb uri字符串中删除这些票证来删除错误。ssl=true&replicset=Cluster0-shard-0&authSource=admin&retryWrites=true

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


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

这个答案并不是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    

我一直在使用Node.js和Express在线课程中的入门代码,该课程于2018年年中制作。初学者代码一直在使用MongooseV4,这个解决方案对我很有效。我的MongoDB Atlas集群是M0免费层。

对于您和任何其他遇到此参考的人:我也有相同的问题,但M10是否解决了此问题?以上是我最好的答案。谢谢,也帮了我很多。非常感谢!这就是我的问题!一旦我将Node.js驱动程序设置为2.2.12版或更高版本,我就在这个过程中取得了进展,但它仍然拒绝了,并出现了一个错误:querySrv Error。将管理员更改为其他任何内容修复了t 他犯了一个错误。
npm i mongoose@latest