【问题标题】:Do I need to disable 'authorization' to create new users for MongoDB?我是否需要禁用“授权”才能为 MongoDB 创建新用户?
【发布时间】:2021-02-10 16:32:04
【问题描述】:

我目前有一个数据库正在积极用于 Digital Ocean 上的一个水滴。我在这个 mongo droplet 上启用了授权。

我想为一个新数据库创建一个新用户,但是我遇到了授权错误。在数字海洋上的this blog 中,它基本上说您可以在禁用授权时创建新的管理用户。

简单地禁用授权几秒钟是“安全的”(即使数据库正在被积极使用),为新数据库创建一个新用户,然后重新启用授权并重新启动守护程序。另外,这是“正确”的方式吗?

【问题讨论】:

  • 如何连接数据库?
  • 我尝试与mongo -u AdminReinier -p --authenticationDatabase admin 连接并创建一个新用户,但这也不起作用。我相信我确实将角色 userAdminAnyDatabase 添加到 AdminReinier 用户,所以它应该能够创建新用户.. @WernfriedDomscheit
  • 您可以禁用授权,但是将端口更改为其他内容并设置net.bindIp: localhost - 然后在授权关闭时没有其他人可以连接到数据库。使用db.getUsers({showCredentials:true})验证创建的用户
  • 谢谢。这就是我最终做的事情,而且很幸运 :)。

标签: node.js mongodb digital-ocean


【解决方案1】:

简单地禁用授权几秒钟是“安全的”

不,就像你跑去商店时让房门开着是不安全的一样。

以管理用户身份连接并根据需要创建其他用户。

【讨论】:

  • 但无论我做什么,我都会不断收到授权错误。当我输入mongo 并执行use admin 并尝试创建新用户时,我收到以下错误:couldn't add user: command createUser requires authentication。据我所知,我只有两个用户,管理员(默认用户)和一个我为一个特定数据库创建的用户....
  • @Reinier68 请阅读并理解答案。请特别注意以“以管理用户身份连接”开头的句子。这意味着以具有 userAdmin 权限的用户身份登录 mongo。尝试以“root”用户身份登录。它可以访问所有内容。您引用的错误说您在没有身份验证的情况下连接到 mongo,例如作为完全没有权限的匿名用户。
  • 我尝试与mongo -u AdminReinier -p --authenticationDatabase admin 连接并创建一个新用户,但这也不起作用。我相信我确实将角色 userAdminAnyDatabase 添加到了 AdminReinier 用户,所以它应该能够创建新用户...... @AlexBlex
  • 错误是什么? “那也不起作用”的信息量不是很大。
【解决方案2】:

启用授权且未创建用户时,无需用户名/密码即可连接,这称为Localhost Exception

但是,一旦创建了第一个管理员用户,如果没有有效的凭据,您将无法再连接。

因此,当您收到授权错误时,已经创建了一个管理员用户,您必须使用该用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2013-05-24
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多