AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 818078
Accepted
Boaz
Boaz
Asked: 2016-12-02 01:30:27 +0800 CST2016-12-02 01:30:27 +0800 CST 2016-12-02 01:30:27 +0800 CST

在仲裁器上更改 mongo 管理员密码

  • 772

我有一个 mongoDB replicaSet,它有 3 个 DB - PRIMARY/SECONDARY + Arbiter。所有 3 个都以相同的方式安装 - 这意味着它们具有默认密码的 admin 数据库。

现在 - 我想更改默认密码。在小学/中学,它运作良好。

mongo admin -u admin -p <password> --authenticationDatabase=admin
db.changeUserPassword("admin",<new password>)

但是 - 在仲裁器中它不起作用(即使在添加rs.slaveOK()了 PRIMARY 之后)

我越来越:

2016-12-01T00:18:51.408-0800 E QUERY    [thread1] Error: Updating user failed: not master :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.updateUser@src/mongo/shell/db.js:1319:15
DB.prototype.changeUserPassword@src/mongo/shell/db.js:1323:9
@(shell):1:1

任何想法如何更改仲裁管理员密码?

mongodb replica-set
  • 2 2 个回答
  • 3554 Views

2 个回答

  • Voted
  1. Best Answer
    Stennie
    2016-12-05T00:25:34+08:002016-12-05T00:25:34+08:00

    如何登录仲裁程序?

    在 MongoDB 3.4 中,副本集中的仲裁者不会复制任何数据(包括用户/角色详细信息)。这意味着您通常可以通过localhost 异常登录到仲裁程序,除非已通过设置enableLocalhostAuthBypass 为false.

    您可以投票/观看一个相关的功能请求:SERVER-5479: Arbiter in authenticated replica set should allow and require login/auth for admin-only operations 。

    如果仲裁者在添加到副本集之前有用户数据怎么办?

    在您的特定情况下,您的仲裁器似乎在mongod配置为副本集成员之前已经拥有一些身份验证数据。这不是预期的(或受支持的)部署,因此为了删除或更新身份验证数据,您需要将仲裁器作为独立服务器启动。

    要删除任何用户信息:

    1. 停止仲裁程序。

    2. --replSet在不带、--keyfile或选项的不同端口上启动仲裁器,--auth以确保在独立模式下进行更改时副本集的其他成员无法连接到仲裁器。

      例如:mongod --dbpath /path/to/data --port 28000 --fork

    3. 现在应该禁用身份验证。使用mongoshell 删除admin数据库:

      mongo localhost:28000/admin --eval 'db.dropDatabase()'
      
    4. 关闭仲裁器,例如:

      mongo localhost:28000/admin --eval 'db.shutdownServer()'
      
    5. 使用您的正常配置启动仲裁器。

    您也可以更改密码(而不是删除admin数据库),但这可能会令人困惑,因为仲裁程序不应该拥有用户数据。针对仲裁者进行身份验证的结果未定义,SERVER-5479 的未来实现不太可能支持仲裁者的预先存在的数据。一旦用户/角色信息被复制到仲裁者,数据将被期望是一致的。

    • 4
  2. Kay
    2019-08-08T23:25:37+08:002019-08-08T23:25:37+08:00

    我迟到了,但从SERVER-32205开始,禁止删除 admin 数据库。因此,不幸的是, @Stennie建议的解决方法不再有效(自 v3.6.3 起)。但是,只要大多数副本集仍然正常运行,甚至还有更简单的解决方法:

    • 关闭仲裁器
    • 删除 db 文件夹的内容:rm -rf [your-data-folder]/db/*
    • 启动仲裁器

    仲裁者将自动加入副本集。只要启用了localhost 异常(通过使用enableLocalhostAuthBypass选项),您就可以(仅)从 localhost 连接到仲裁器并在仲裁器上执行 mongodb 命令。

    • 2

相关问题

  • MongoDB 的 SELinux 设置

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve