db.createUser在docker setup中没有在mongodb中创建任何用户

时间:2016-11-27 14:34:40

标签: mongodb docker docker-compose

我正在docker中构建一个mongodb镜像,并在其中一个启动shell脚本中创建了两个mongodb用户,如下所示。

mongod --dbpath /data/db &

RET=1
while [[ RET -ne 0 ]]; do
    echo "=> Waiting for confirmation of MongoDB service startup"
    sleep 5
    mongo admin --eval "help" >/dev/null 2>&1
    RET=$?
done

ADMINUSER=rootUser
ADMINPASS=changeMe
DBUSER=opal
DBPASSWORD=opal

mongo admin --eval "db.createUser({user: '$ADMINUSER', pwd: '$ADMINPASS', roles:[{role:'root',db:'admin'}]});"

mongo opaldb --eval "db.createUser({user: '$DBUSER', pwd: '$DBPASSWORD', roles:[{role:'dbOwner',db:'opaldb'}]});"

mongod --shutdown

打开mongodb容器后,我只能看到管理员用户,而不能看到其他用户。

> use admin
switched to db admin
> show users
{
        "_id" : "admin.rootUser",
        "user" : "rootUser",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}
> use opald
switched to db opald
> show users
>

我错过了一些愚蠢的东西吗?

1 个答案:

答案 0 :(得分:0)

创建第一个用户后,您需要进行身份验证,然后创建第二个用户

mongo admin --eval "db.auth('${admin_user}','${admin_password}');db.createUser({user: '$DBUSER', pwd: '$DBPASSWORD', roles:[{role:'dbOwner',db:'opaldb'}]});"