docker 容器内的 Mongodb 身份验证

标签 mongodb docker authentication server

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

mongo manager --port 27017 -u "admin" -p "--------"
--authenticationDatabase "manager"

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

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

docker exec -it mongodb bash

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

非常感谢您的帮助。如果需要更多信息,请告诉我。

最佳答案

您确定您的 authenticationDatabase 是“manager”吗?

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

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

    $ docker exec -it «container_name» bash

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

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

  3. 身份验证后,运行 shell 脚本以切换到保存用户数据的数据库。

    $ 使用管理员

  4. 运行 changeUserPassword 命令更改密码:

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

就是这样。

关于docker 容器内的 Mongodb 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53710305/

相关文章:

Laravel - Jenssegers MongoDB 嵌套数组更新不起作用

node.js - 如何在快速 route 显示图像

ubuntu - 使用 docker 安装后无法访问 Rancher UI

SQL Server 2008 中的 SQL Server 身份验证

node.js - MongoDB 警告 : --rest is specified without --httpinterface

javascript - docker 容器内的 Node.js 应用程序经常出现堆内存不足的情况

docker - 移除故障节点后 Docker Swarm 中的孤立任务

authentication - AFNetworking 2.0 身份验证 Kerberos 和 NTLM

asp.net-mvc - 从 OWIN 身份验证中间件考虑 Controller 属性

java - MongoDB Java 驱动程序 @Discriminator @BsonDiscriminator 注解