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

时间:2018-03-04 23:21:15

标签: mongodb mongodb-atlas

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

not authorized on admin to execute command

这很奇怪,因为我只有一个用户,并且它可以访问所有内容,至少就我在地图集(Click to see image here)上所知道的那样。

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

10 个答案:

答案 0 :(得分:13)

我最后向MongoDB大学讨论区提问。如果有人遇到这个,这显然是因为我使用的是免费群集。

答案 1 :(得分:6)

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

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

答案 2 :(得分:4)

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

  

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

通过选择版本 2.2.12或更高版本,并使用提供的链接,一切都会很好

  

mongodb://用户名: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 :(得分:2)

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

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

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

(来源为地图集支持票)

答案 4 :(得分:1)

我遇到了类似的障碍,花了几个小时,问题出在mongodb地图集提供的连接字符串上:const tmpl = `Name: {{.Name}}, Ints: {{BazWrapper .}}` func main() { f := Foo{"Foo"} funcMap := template.FuncMap{ "BazWrapper": func(f Foo) string { a, b := f.Baz() return fmt.Sprintf("%d, %d", a, b) }, } t, err := template.New("test").Funcs(funcMap).Parse(tmpl) if err != nil { fmt.Println(err) } t.Execute(os.Stdout, f) }

我使用了不同的连接字符串,并且运行良好。就是这个: mongodb+srv://username:password@clusterName-jynkd.mongodb.net/test?retryWrites=true。 确保clustername + port像这样: clusterName-shard-00-00-jynkd.mongodb.net:27017

答案 5 :(得分:0)

此错误是因为您正在尝试在admin上创建集合,在图集中这是不可能的,因为安全性。

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

这是此答案的链接。

它是西班牙语。

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

enter image description here

答案 8 :(得分: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

答案 9 :(得分:0)

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

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

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

npm i mongoose@latest    

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