zoukankan      html  css  js  c++  java
  • springboot 和 mongdb连接问题 Exception in thread "main" com.mongodb.MongoSecurityException:

    1 Exception in thread "main" com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='user', source='userdb', password=<hidden>, mechanismProperties={}}
    2 Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server 你的IP:你的端口. The full response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }

    出现以上springboot 2.x连接 mongdb 3.x的情况。

    直面意思,就是指认证失败。

    情况有4种,

    1.你的认证方式有问题

    2.认证信息有误(用户名密码等配错了)

    3.mongodb数据库问题

    4.springboot yml配置错误


    1.你的认证方式有问题

    SCRAM-SHA-1:就是mongodb 3.x之后默认的认证方式,springboot 2.x之后也是可以选择这种方式。
    注意:mechanism=SCRAM-SHA-1。如果你不是这种方式,你就要升级你的springboot版本,或者去修改你的mongdb数据库的认证方式/降低mongodb版本。

    你用纯javamongodb-driver包测试时,可见com.mongodb.MongoCredential 类下选取的认证方式来源于如下类。
    public enum AuthenticationMechanism {
        GSSAPI("GSSAPI"),
        PLAIN("PLAIN"),
        MONGODB_X509("MONGODB-X509"),
        /** @deprecated */
        @Deprecated
        MONGODB_CR("MONGODB-CR"),
        SCRAM_SHA_1("SCRAM-SHA-1"),
        SCRAM_SHA_256("SCRAM-SHA-256");
    
        private static final Map<String, AuthenticationMechanism> AUTH_MAP = new HashMap();
        private final String mechanismName;
    
        private AuthenticationMechanism(String mechanismName) {
            this.mechanismName = mechanismName;
        }

    2.认证信息有误(用户名密码等配错了)

      如果你手动,改错 数据库名或者用户名密码,你会发现也是会报这个错误。

    3.mongdb数据库问题

      用户权限问题。正确的用户创建如下:

    use mydb
    #没有数据库会自动创建
    
    #在此数据库下创建用户
    db.createUser(
      {
        user: "user",
        pwd: "123456",
        roles: [ { role: "readWrite", db: "mydb" } ]
      }
    )
    
    #重新进入,开启auth参数,认证通过后才能访问数据库
    ./mongod -f mongdb.conf --auth
    
    db.auth("user","123456")  认证通过后可以操作数据库。

     4.springboot yml配置错误

    spring:
      application:
          name: test
      data:
        mongodb:
          host: 你的Ip
          username: user
          password: 123456
          database: user
          port: 1234
    
    #如果你是上面这种配置方式,那么恭喜你。他根本不会成功
    #正确配置是如下这种方式
         uri: mongodb://user:123456@你的Ip:1234/user

     

  • 相关阅读:
    1、听说过Redis吗?它是什么?
    55、数据库高并发是我们经常会遇到的,你有什么好的解决方案吗?
    54、数据库如何保证持久性?
    53、数据库如何保证原子性?
    52、数据库如何保证一致性?
    注解定义、基本语法和属性
    Macbook 装机必备--开发篇
    http
    python:beaufiful
    python-yield
  • 原文地址:https://www.cnblogs.com/xzdwn/p/12442061.html
Copyright © 2011-2022 走看看