docker 容器内的 Mongodb 身份验证

fre*_*cks 3 authentication mongodb docker server

这就是我的情况。我有一个 mongodb docker 容器实例,我需要更改管理员密码。现在,我有了使用主机、IP 和凭据可以很好地连接到 mongodb 的凭据。我可以通过 ssh 访问服务器,并且需要更改管理员密码。但如果我这样做的话

mongo manager --port 27017 -u "admin" -p "--------"
--authenticationDatabase "manager"
Run Code Online (Sandbox Code Playgroud)

给我一个身份验证错误。我无法运行任何管理命令,例如: db.auth('admin', 'password')

我的问题是,如果我这样做,我该如何阻止容器内的 mongo?

docker exec -it mongodb bash
Run Code Online (Sandbox Code Playgroud)

任何其他解决方法都可以。目标是更改密码或创建新的管理员用户来控制用户和角色。

十分感谢你的帮助。如果需要更多信息,请告诉我。

snn*_*snn 5

您确定您的身份验证数据库是“manager”吗?

\n\n

无论如何,您不需要停止 mongo 进程来与数据库交互,而是使用 mongo shell 验证具有必要权限的用户。

\n\n
    \n
  1. 访问正在运行的 mongo 容器:

    \n\n

    $ docker exec -it \xc2\xabcontainer_name\xc2\xbb bash

  2. \n
  3. 使用 mongo shell 进行身份验证:

    \n\n

    $ mongo -u admin -p 123admin --authenticationDatabase admin

  4. \n
  5. 通过身份验证后,运行 shell 脚本以切换到保存用户数据的数据库。

    \n\n

    $ 使用管理员

  6. \n
  7. 运行changeUserPassword命令更改密码:

    \n\n

    $ db.changeUserPassword("admin", "admin123")

  8. \n
\n\n

就是这样。

\n