簡體   English   中英

Docker compose mongo不會創建root用戶

[英]Docker compose mongo wont create root user

我正在嘗試創建一個帶有 mongo 圖像的 docker 容器。 我希望容器有一個名為admin的根用戶,並且還能夠創建一個名為experts_db的數據庫。 這是我docker-compose.yaml

version: '3.7'

services:
    mongodb:
        image: mongo:4.0.4
        container_name: mongodbtest
        restart: always
        env_file: .env
        environment:
            MONGO_INITDB_ROOT_USERNAME: admin
            MONGO_INITDB_ROOT_PASSWORD: 123456789
            MONGO_INITDB_DATABASE: experts_db
        ports:
            - 27017:27017
        volumes:
             - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro

這是我的mongo-init.js文件:

use admin;

db.createUser(
        {
            user: "andrea",
            pwd: "123456789",
            roles: [
                "userAdminAnyDatabase",
                   "dbAdminAnyDatabase",
                   "readWriteAnyDatabase"

            ]
        }
);

盡管如此,當我在 mongo shell 中並嘗試獲取所有用戶的列表時,我收到以下錯誤:

use experts_db
switched to db experts_db
> db.getUsers()
2020-01-22T14:30:00.569+0000 E QUERY    [js] Error: command usersInfo requires authentication :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getUsers@src/mongo/shell/db.js:1763:1
@(shell):1:1

有誰知道為什么會這樣? 我是 mongo 的新手,不明白如何解決這個問題

您需要刪除容器內的數據/數據庫/卷,然后重新運行並重新構建

rm -rf data/db/
docker-compose up --build

我已經測試了下面的 JS 腳本,它按預期工作:

db.createUser(
{
    user: "aaa",
    pwd: "123",
    roles: [ { role: "readAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" }]
});

創建后,您可以跳上 mongoDB shell 並運行 db.getUsers() 以確保用戶已成功創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM