【发布时间】:2019-10-16 05:22:23
【问题描述】:
所以我尝试使用官方的mongo Docker image,版本4.2来设置一个MongoDB。
我想要实现的是使用启用了身份验证的服务器,并且我想要一个具有自定义用户和密码的自定义数据库。
所以,我设置了以下环境变量:
MONGO_INITDB_DATABASE: mydb
MONGO_INITDB_ROOT_USERNAME: jane
MONGO_INITDB_ROOT_PASSWORD: secret
在文档中指出,如果您提供后两个环境变量,则会自动启用身份验证。
但是,当我尝试使用凭据 jane 和 secret 访问 mydb 数据库时,我得到的只是一个错误:
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'}])"
但这也不起作用。我错过了什么?
【问题讨论】:
-
你尝试从本地主机...
-
是的,我从
localhost运行所有这些。 -
mongo admin -u jane -p 'secret'为我工作 -
包括
--eval部分?