这是我的情况。我有一个 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 对具有必要权限的用户进行身份验证。
访问正在运行的 mongo 容器:
$ docker exec -it «container_name» bash
使用 mongo shell 进行身份验证:
$ mongo -u admin -p 123admin --authenticationDatabase admin
身份验证后,运行 shell 脚本以切换到保存用户数据的数据库。
$ 使用管理员
运行 changeUserPassword 命令更改密码:
$ db.changeUserPassword("admin", "admin123")
就是这样。
关于docker 容器内的 Mongodb 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53710305/