首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带Spring引导的AuthenticationFailed MongoDB

带Spring引导的AuthenticationFailed MongoDB
EN

Stack Overflow用户
提问于 2022-12-01 21:31:24
回答 2查看 26关注 0票数 0

我试图使用docker- SpringBoot来使用SpringBoot,但我似乎无法使用在docker-compose.yamlapplication.properties中设置的用户名和密码连接到数据库。

下面是docker-compose.yaml

代码语言:javascript
复制
version: "3.8"
services:
  mongodb:
    image: mongo
    container_name: mongodb
    ports:
      - 27017:27017
    volumes:
      - ./001_users.js:/docker-entrypoint-initdb.d/001_users.js:ro
      - data:/data
    environment:
      - MONGO_INITDB_ROOT_USERNAME=rootuser
      - MONGO_INITDB_ROOT_PASSWORD=rootpass
  mongo-express:
    image: mongo-express
    container_name: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=rootuser
      - ME_CONFIG_MONGODB_ADMINPASSWORD=rootpass
      - ME_CONFIG_MONGODB_SERVER=mongodb
volumes:
  data: {}

networks:
  default:
    name: mongodb_network

application.properties

代码语言:javascript
复制
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=rootuser
spring.data.mongodb.password=rootpass
spring.data.mongodb.database=foober
spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost
spring.data.mongodb.auto-index-creation=true

我尝试在下面的代码中添加docker文件(001_users.js),但它没有解决问题。

代码语言:javascript
复制
db.createUser(
    {
        user: "rootuser",
        pwd: "rootpass",
        roles:[
            {
                role: "readWrite",
                db:   "foober"
            }
        ]
    }
);

另外,mongodb日志显示,管理员数据库中找不到rootuser,但是当我转到mongo表达式时,用户就出现在管理数据库中。

EN

回答 2

Stack Overflow用户

发布于 2022-12-01 21:51:48

如果您正在将spring引导服务作为撰写堆栈的一部分运行,那么将spring.data.mongodb.host更改为mongodb。当引用来自另一个服务的服务时,主机名是服务名称。请注意,您没有在撰写文件中包含使用spring数据的服务,所以我不知道这是否是您要做的。

或者,你是在码头外经营这个吗?您还应该查看data的卷映射。也许您应该为卷提供一个真正的目录,并指出它在您的撰写文件中是外部的。

你看过mongodb的日志了吗?它是否显示正在进行登录尝试?你也不需要用你正在做的事情来建立一个网络,这样你就可以删除这个部分。你能用你站起来的快递容器访问mongodb吗?

无论您尝试什么,都要确保每次在重新运行之前,如果数据目录没有工作,就完全删除数据目录中的所有文件。您应该删除入口点用户创建文件,因为环境变量就足够了。

票数 1
EN

Stack Overflow用户

发布于 2022-12-01 22:17:01

原来端口27017是由另一个进程获取的,该进程导致身份验证失败.我把港口改成了免费的,现在它开始工作了。

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

https://stackoverflow.com/questions/74648391

复制
相关文章

相似问题

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