gpt4 book ai didi

mongodb - 在具有身份验证的 MongoDB Docker 镜像上找不到用户

转载 作者:行者123 更新时间:2023-12-02 19:02:09 24 4
gpt4 key购买 nike

所以我正在尝试使用官方 mongo Docker image 设置一个 MongoDB , 版本 4.2 .

我想要实现的是使用启用了身份验证的服务器,并且我想要一个带有自定义用户和密码的自定义数据库。

因此,我正在设置以下环境变量:

MONGO_INITDB_DATABASE: mydb
MONGO_INITDB_ROOT_USERNAME: jane
MONGO_INITDB_ROOT_PASSWORD: secret

在文档中它指出,如果您提供后两个环境变量,则会自动启用身份验证。

但是,当我尝试访问 mydb 时使用凭据的数据库 janesecret ,我得到的只是一个错误:
Supported SASL mechanisms requested for unknown user 'jane@mydb'
SASL SCRAM-SHA-1 authentication failed for jane on mydb from client 172.17.0.1:54702 ; UserNotFound: Could not find user "jane" for db "mydb"

这是为什么?我错过了什么?

我的猜测是创建的用户只能访问 admin数据库,我需要授予用户访问权限 jane到数据库 mydb .我尝试使用以下命令来做到这一点:
mongo admin -u jane -p secret --eval "db.grantRolesToUser('jane', [{role: 'dbOwner', db: 'mydb'}])"

但这也不起作用。我错过了什么?

最佳答案

您可以使用 进行身份验证简 , secret 反对 管理员 db,而不是 mydb
运行 mongo -u jane -p secret相当于运行 mongo -u jane -p secret -authenticationDatabase admin .检查容器日志以进行验证。
MONGO_INITDB_DATABASE 用于不同的目的。
docs状态:

MONGO_INITDB_ROOT_USERNAME, MONGO_INITDB_ROOT_PASSWORD Thesevariables, used in conjunction, create a new user and set that user'spassword. This user is created in the admin authentication databaseand given the role of root, which is a "superuser" role.

MONGO_INITDB_DATABASE This variable allows you to specify the name ofa database to be used for creation scripts in/docker-entrypoint-initdb.d/*.js (see Initializing a fresh instancebelow). MongoDB is fundamentally designed for "create on first use",so if you do not insert data with your JavaScript files, then nodatabase is created.

Initializing a fresh instance When a container is started for the first time it will execute fileswith extensions .sh and .js that are found in/docker-entrypoint-initdb.d. Files will be executed in alphabeticalorder. .js files will be executed by mongo using the databasespecified by the MONGO_INITDB_DATABASE variable, if it is present, ortest otherwise. You may also switch databases within the .js script.

关于mongodb - 在具有身份验证的 MongoDB Docker 镜像上找不到用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58406236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com