首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongodb与坞-组合-创建用户

Mongodb与坞-组合-创建用户
EN

Stack Overflow用户
提问于 2020-03-31 07:40:57
回答 1查看 1.8K关注 0票数 6

这是我的船坞-合成人。

代码语言:javascript
运行
复制
version: "2.0"
services:
  mongo_container:
    image: mongo:latest
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      MONGO_INITDB_DATABASE: testdb
    ports:
      - "27017:27017"
    volumes:
      - ./mongodata:/data/db

在我的弹簧配置中:

代码语言:javascript
运行
复制
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.username=root
spring.data.mongodb.password=example
spring.data.mongodb.database=testdb

但是,每次我尝试将我的应用程序连接到Mongo时,我都会在Docker控制台中看到以下错误:

代码语言:javascript
运行
复制
mongo_container_1  | 2020-03-31T07:37:24.803+0000 I  ACCESS   [conn2] SASL SCRAM-SHA-1 authentication failed for root on testdb from client 172.29.0.1:36628 ; UserNotFound: Could not find user "root" for db "testdb"

我做错了什么?我尝试用docker system prune删除所有容器,然后再次运行它,但是仍然会出现相同的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-31 22:49:43

您需要在application.properties中添加以下行:

代码语言:javascript
运行
复制
spring.data.mongodb.authentication-database=admin

来自码头-枢纽mongodb自述

MONGO_INITDB_ROOT_USERNAME,MONGO_INITDB_ROOT_PASSWORD 这些变量用于连接,创建一个新用户并设置该用户的密码。这个用户是在管理身份验证数据库中创建的,并给出了根的角色,它是一个“超级用户”角色。

至于数据库:

这个变量允许您指定一个数据库的名称,以便在/ MONGO_INITDB_DATABASE -entrypoint-initdb.d/*..js中创建脚本.MongoDB从根本上说是为“先创建”而设计的,因此如果您不使用JavaScript文件插入数据,则不会创建数据库。

在MongoDB中,当身份验证启用时,您可以对特定的数据库进行身份验证(默认情况下是管理),然后连接并使用另一个数据库。这就是为什么有两个不同的属性:身份验证-数据库(用于身份验证)和数据库(要使用的属性)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60945565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档