尝试连接到 mongo docker 容器时身份验证失败

问题描述 投票:0回答:1

我正在尝试连接到 Mongo 容器,但我不断收到身份验证错误。

docker-compose.yaml

mongo:
image: mongo:latest
container_name: mongo
hostname: mongo
command: [--auth]
env_file: .env
volumes:
  - ./docker/mongo-seed/scripts:/docker-entrypoint-initdb.d:ro
restart: always
ports:
  - "27017:27017"

.env 文件

MONGO_DATABASE_NAME=app-local
MONGO_CONNECTION_STRING=mongodb://{0}:{1}@localhost:27017
MONGO_USER=user-local
MONGO_PASSWORD=pwd-local

脚本初始001_initial_script.js

db = db.getSiblingDB("admin")

db.createUser({
    user: process.env["MONGO_USER"],
    pwd: process.env["MONGO_PASSWORD"],
    roles: [
        {
            role: 'dbOwner',
            db: process.env["MONGO_DATABASE_NAME"],
        },
    ],
});

db = db.getSiblingDB(process.env["MONGO_DATABASE_NAME"])
mongodb docker docker-compose containers
1个回答
0
投票

您在

admin
数据库中创建了用户,因此您必须连接

--authenticationDatabase admin

不与

--authenticationDatabase app-local

除此之外,仅当您创建了管理员用户(即具有

root
角色或至少
userAdminAnyDatabase
角色的用户)时,身份验证才会激活。我对docker不熟悉,不知道你的情况下是否已经创建了这样的用户。

然后,我认为覆盖内部和预定义的

db
变量并不明智。更好地利用这些:

db.getSiblingDB("admin").createUser(...)

use admin
db.createUser(...)

const admin = db.getSiblingDB("admin")
admin.createUser(...)
© www.soinside.com 2019 - 2024. All rights reserved.