mongodb - 如何将用户添加到在 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,经过使用测试,没有创建新的数据库。
我将感谢一个解决方案,它可以在我的数据库中创建一个用户并列出数据库。
解决方案
实际上,您当前创建了管理员用户(并隐式激活身份验证),但从不使用它来连接到您的数据库。
在连接时提供用户名和密码将授予您以管理员身份访问权限,然后您将能够创建其他用户:
mongo --username mongoadmin --password --host localhost:27017 --authenticationDatabase admin
推荐阅读
- java - Android Studio Java 文本文件中存储的输入在加载后全部加载到一行中以显示在屏幕上
- selenium - 如何通过 Selenium Webdriver 检查超链接?
- r - 您如何将 ggplot 从 12 个单独的条拆分为 3 组,每组 4 个?
- r - 如果为空,则将按时间顺序编号添加到列
- reactjs - 可以在reactjs中用axios设置字符串数据状态
- amazon-web-services - 使用 masteruser 凭据连接到托管在 aws 上的 elasticsearch
- postgresql - 为 Play 框架配置 HikariCP 以通过 SSL 连接到 Postgres?
- amazon-web-services - 无服务器部署不起作用(NestJs、AWS Lambda)- 不冗长
- gitlab - 仅在更新相应代码时如何运行 gitlab 作业
- android - 条纹 - 颤振:缺少必需的参数:类型