首页 > 解决方案 > 如何将用户添加到在 docker 容器中运行的 mongoDB 数据库?

问题描述

我想将自定义用户添加到在 docker 上运行的 MongoDB 数据库。

我使用以下命令启动了我的图像:

docker run -p 27017-27019:27017-27019 
--name mongo 
-e MONGO_INITDB_ROOT_USERNAME=mongoadmin 
-e MONGO_INITDB_ROOT_PASSWORD=secret 
-e MONGO_INITDB_DATABASE=interviewTest 
-d mongo

毕竟,我正在尝试使用我的容器运行 bash 命令来 ,,talk'' ,例如:

docker exec -it mongo bash

毕竟我在终端中使用命令:

mongo

我在日志中收到信息:

MongoDB shell version v4.2.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("57a90f02-6ba4-4ef3-8bba-8a5f1b424574") }
MongoDB server version: 4.2.0

看起来一切正常,我可以使用以下命令创建数据库:

use test

但是当我尝试使用以下命令列出数据库时:

show dbs

我在命令行中没有收到任何结果。该命令被接受,我收到带有闪烁光标的空行。

此外,当我尝试自己创建数据库时,例如使用命令进行测试

use test

似乎它的创建没有任何问题,但毕竟当我想尝试使用脚本创建用户时:

db.createUser(
{
    user: "myUser",
    pwd: "myPassword",
    roles: [ { role: "readWrite", db: "interviewTest" }, "readWriteAnyDatabase" ]
}
);

我收到一个错误:

QUERY [js] uncaught exception: Error: couldn't add user: command createUser requires authentication :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1370:11

似乎使用上面的命令 docker run 我应该有一个数据库并列出它没有任何问题。我有一个 Mongo Explorer,经过使用测试,没有创建新的数据库。

我将感谢一个解决方案,它可以在我的数据库中创建一个用户并列出数据库。

标签: mongodbbashshelldocker

解决方案


实际上,您当前创建了管理员用户(并隐式激活身份验证),但从不使用它来连接到您的数据库。

在连接时提供用户名和密码将授予您以管理员身份访问权限,然后您将能够创建其他用户:

mongo --username mongoadmin --password --host localhost:27017 --authenticationDatabase admin

推荐阅读