簡體   English   中英

Docker:MongoDB init 腳本無法運行 - 身份驗證錯誤

[英]Docker: MongoDB init script fails to run - Authentication error

我正在為 MongoDB 容器擴展我的 docker-compose.yml。 我想添加一些初始數據。

docker-compose.yml如下所示:

version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root
    volumes:
      - mongo-data:/data/db:cached
      - ./fixtures/mongo_import.js:/docker-entrypoint-initdb.d/mongo_import.js

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: root
      ME_CONFIG_BASICAUTH_USERNAME: root 
      ME_CONFIG_BASICAUTH_PASSWORD: root

volumes:
  mongo-data:
    driver: local

當我運行這個腳本時,我在 mongo 容器日志中收到一個錯誤,提示用戶 root 不存在。

所以我創建了一個 mongo_import.js 腳本,它看起來像這樣:

db.auth('root', 'root')

db = db.getSiblingDB('licensing')

db.createUser({
  user: 'root',
  pwd: 'root',
  roles: [
    {
      role: 'root',
      db: 'admin',
    },
  ],
});

它不起作用。 當我轉到此容器中的 shell 並運行mongo mongo_import.js我得到:

# mongo mongo_import.js
MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b148691b-d585-48e9-9cdd-1d58ad4a4294") }
MongoDB server version: 4.0.10
Error: Authentication failed.
2019-05-31T10:21:36.788+0000 E QUERY    [js] Error: couldn't add user: not authorized on licensing to execute command { createUser: "root", pwd: "xxx", roles: [ { role: "root", db: "admin" } ], digestPassword: true, writeConcern: { w: "majority", wtimeout: 600000.0 }, lsid: { id: UUID("b148691b-d585-48e9-9cdd-1d58ad4a4294") }, $db: "licensing" } :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1491:15
@mongo_import.js:5:1
failed to load: mongo_import.js

我究竟做錯了什么?

你必須添加

MONGO_INITDB_DATABASE=admin

到您的環境變量。

如果您使用.js腳本,則必須使用變量MONGO_INITDB_DATABASE定義身份驗證數據庫。

如果不設置此值,腳本將在test數據庫中進行身份驗證。

暫無
暫無

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

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