MongoError: 用户不允许执行此操作。

52

我正在使用MongoDB Atlas作为我的数据库。

我在使用带有Loopback的Angular4作为API。

我的应用程序可以正常连接到我的数据库。但是,当我尝试获取数据时,我会收到以下错误消息(我已将我的dbname替换为dbname):

MongoError: user is not allowed to do action [find] on [dbname.$cmd]

如果我使用本地的MongoDB客户端或AWS上的MongoDB实例,查询可以正常工作。 但是,在使用Atlas时,我会收到此错误。


4
我遇到了这个错误,问题出在我复制连接字符串时没有将数据库名称从“test”改为我的数据库名称。 - Meier
26个回答

53
在Atlas集群中,选择 Security,进入 Database Access,在数据库用户权限下点击 Edit,选择 Built-in role 并在下拉框中选择 Read and write to any database 给用户授权。重试或刷新连接以查看结果。

10
对我来说这不起作用。我必须选择atlasAdmin - Cao Shouguang
1
为了给特定的数据库授权,请进入“特定权限”,从下拉菜单中选择readWrite,输入数据库名称并将集合留空。我建议不要定义一个可以访问系统中所有内容的用户! - kaya

23

呃!这太花费时间来修复了!对于那些遇到相同问题的人,我必须做以下两件事:

1> 我遇到了这个错误,我的问题是当复制连接字符串时,我没有将数据库名称从“test”更改为我的自己的数据库。 - Meier Dec 8'17 at 12:43

2>

"mongodb://:@cluster0-shard-00-00- rb899.mongodb.net:27017,cluster0-shard-00-01- rb899.mongodb.net:27017,cluster0-shard-00-02- rb899.mongodb.net:27017/?ssl=true&replicaSet=Cluster0-shard- 0&authSource=admin"

此外,在Atlas中,您必须指定旧的驱动程序2.2.12或更高版本。完成这些操作后,它终于可以工作了。

谢谢大家!


15

我自己也遇到了同样的错误。

  • 如果您使用的是MongoDB NodeJS驱动程序的v.3.0版本,请参考MikaS的帖子以进行必要的MongoClient.connect更改。 https://dev59.com/CVYN5IYBdhLWcg3wR2k-#47662979

  • 要将应用程序连接到Atlas MongoDB,请使用3.4驱动程序。

mongodb://<USERNAME>:<PASSWORD>@cluster0-shard-00-00-
rb899.mongodb.net:27017,cluster0-shard-00-01-
rb899.mongodb.net:27017,cluster0-shard-00-02-
rb899.mongodb.net:27017/<DBNAME>?ssl=true&replicaSet=Cluster0-shard-
0&authSource=admin

1
你为我节省了很多寻找解决方案的时间。非常感谢你。 - Gonzalo

10

将MongoDB中“Database Access”下的角色更改为“AtlasAdmin”,问题得以解决。

这里输入图片描述


确实有效!! - Gabriel Cecon Carlsen

9
在 Atlas 集群中,单击左侧边栏的 SECURITY 下的 Database Access
单击编辑按钮,然后将角色 atlasAdmin@admin 添加到用户。 enter image description here enter image description here

8

这个答案很有帮助!谢谢。 - MOLLY

5

您可以前往Atlas->Security->数据库访问选项卡并添加具有Atlas管理员角色的新用户,然后您可以使用以下命令进行连接

mongo "mongodb+srv://cluster0.0q8wi.mongodb.net/admin" --username <username> -p <password>

4

访问Atlas网站

数据库访问 > 数据库用户 > 编辑(你的用户) > 内建角色 >> 更改为Atlas管理员


4

通常,此错误发生的原因是您在数据库中的当前用户没有适当的凭据。

  1. 转到 安全 部分下方的 数据库访问
  2. 单击 编辑 添加的用户。 enter image description here
  3. 内置角色 部分中,选择 Atlas admin 并按下 更新用户 按钮。 enter image description here

3

转到数据库访问 -> 编辑 -> 内置角色 -> 选择atlas_admin更新用户


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接