我有一个MongoDB Atlas集群,我试图在同一个实例中复制数据库。不幸的是,每次我尝试运行db.copyDatabase()或copydb admin命令时,都会出现以下错误:
not authorized on admin to execute command
这很奇怪,因为我只有一个用户,并且它可以访问所有内容,至少就我在地图集(Click to see image here)上所知道的那样。
我在stackoverflow中进行了一些搜索,但看起来大多数答案都与本地运行的mongod实例有关,而不是在atlas中运行的那些...我是否设置了用户错误?
答案 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)
答案 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 免费层。